ホームページ >バックエンド開発 >C++ >C でナノスケール時間測定を実現するにはどうすればよいですか?

C でナノスケール時間測定を実現するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-26 02:24:13236ブラウズ

How Can I Achieve Nanoscale Time Measurement in C  ?

ナノ秒の時間測定のための C タイマー関数

C クラス関数を使用してナノスケールの精度で実行時間を測定するには、デフォルトの Clock_t 実装よりも高い精度を提供するタイマーが必要です。

提供されたコードは、 Clock_t タイプを利用して時間を秒単位で測定します。ナノスケールの精度を得るには、代替タイマー実装が必要です。

Linux (および BSD)

Clock_gettime() を使用します:

#include <sys/time.h>

int main() {
    timespec ts;
    clock_gettime(CLOCK_REALTIME, &ts);
    return 0;
}

Windows

を使用するQueryPerformanceCounter:

#include <windows.h>

int main() {
    LARGE_INTEGER freq, pc;
    QueryPerformanceFrequency(&freq);
    QueryPerformanceCounter(&pc);
    return 0;
}

追加の考慮事項:

  • QueryPerformanceCounter は、特定のチップセットで異常な読み取り値を返すことがあります。
  • Windows 7 以降では、プロセッサーに不変 TSC があるかどうかを検出し、必要に応じて外部タイマーを使用します。ただし、プロセッサの同期は引き続き行われます。

参考文献:

  • [クロック_gettime](https://linux.die.net/man/3/クロック_gettime)
  • [QueryPerformanceCo [高解像度Windows の時計とタイマー](http://performancebydesign.blogspot.com/2012/03/high-resolution-locks-and-timers-for.html)

以上がC でナノスケール時間測定を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。