Windows Epochから現在までナノ秒を計算すると、マイクロ秒の粒度が得られますか?

Windows Epochから現在までナノ秒を計算すると、マイクロ秒の粒度が得られますか?

Ubuntu Linux 16.04およびg ++を使用して、Unix EpochまたはWindows Epochと任意の日付/時刻の間のナノ秒数を計算するときにマイクロ秒またはミリ秒の粒度を取得できるかどうか疑問に思います。 time(NULL) の time_t 結果には秒単位があるのに対して、 gettimeofday の構造体 timeval 結果にはミリ秒単位があることがわかります。

この問題を解決する他の方法は何ですか?これはプログラミングの質問ではありません。私はこれをテストするためのプログラムを書いており、必要に応じて共有できます。

どんな助けでも大変感謝します。

ベストアンサー1

を使用してこれを行うことができますgettimeofday()。これはStackOverflowへの回答、ここに引用します。

マイクロ秒タイムスタンプを取得するには2つのオプションがあります。最初の(そして最良の)オプションはタイプを直接使用することですtimeval

struct timeval GetTimeStamp() {
    struct timeval tv;
    gettimeofday(&tv,NULL);
    return tv;
}

2番目に私にとって理想的ではないオプションは、uint64_tからuint64_tを構築することですtimeval

uint64_t GetTimeStamp() {
    struct timeval tv;
    gettimeofday(&tv,NULL);
    return tv.tv_sec*(uint64_t)1000000+tv.tv_usec;
}

おすすめ記事