ホームページ > バックエンド開発 > C++ > 異なるオペレーティング システム間で C でナノ秒精度のタイミングを実現するにはどうすればよいですか?

異なるオペレーティング システム間で C でナノ秒精度のタイミングを実現するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-17 09:06:25
オリジナル
947 人が閲覧しました

How Can I Achieve Nanosecond Precision Timing in C   Across Different Operating Systems?

ナノ秒精度の C のタイマー関数

C で API 関数の実行のタイミングを計る場合、組み込みの Clock() 関数最初に経過時間を秒単位で計算します。ナノ秒単位でより正確な測定値を取得するには、プラットフォーム固有の計時メカニズムを詳しく調べる必要があります。

Linux および BSD

Linux および BSD オペレーティング システムの場合は、 Clock_gettime()おすすめですメソッド:

#include <sys/time.h>

int main() {
    timespec ts;
    // For Linux, use: clock_gettime(CLOCK_REALTIME, &ts);
    // For FreeBSD, use: clock_gettime(CLOCK_MONOTONIC, &ts);
}
ログイン後にコピー

Windows

Windows は QueryPerformanceCounter 関数を提供します:

#include <windows.h>

int main() {
    LARGE_INTEGER ts;
    QueryPerformanceCounter(&ts);
}
ログイン後にコピー

精度と精度に関する考慮事項

その間QueryPerformanceCounter はより高い解像度を提供しますが、次のような制限があります。

  • 特定のチップセット、特に AMD プロセッサでは不一致が発生する可能性があります。
  • 複数のプロセッサ間の同期は困難になる可能性があります。

Windows 7 以降のバージョンでは、不変条件でプロセッサを検出することでこれらの問題に対処しようとしています。 TSC (タイム スタンプ カウンター) と、必要に応じて外部タイマーを使用します。

追加リソース

さらに詳しい情報とトラブルシューティングについては、これらの追加リソースを参照してください。記事:

  • https://msdn.microsoft.com/en-us/library/windows/desktop/ee417693(v =vs.85).aspx
  • https://stackoverflow.com/a/4588605/34329
  • https://blogs.oracle. com/dholmes/entry/inside_the_hotspot_vm_locks
  • https://performancebydesign.blogspot.com/2012/03/high-resolution-locks-and-timers-for.html
  • QueryPerformanceCounterステータス?

以上が異なるオペレーティング システム間で C でナノ秒精度のタイミングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート