ホームページ  >  記事  >  バックエンド開発  >  Linux 上の C で高精度のタイミングを実現するにはどうすればよいですか?

Linux 上の C で高精度のタイミングを実現するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-09 17:20:021000ブラウズ

How to Achieve High-Precision Timing in C   on Linux?

Linux 上の C での高精度タイミング

mmsystem.h の QueryPerformanceCounter は、Windows で信頼性の高い高解像度タイマーを提供します。 Linux の場合は、次の代替案を検討してください。

  • Boost ptime: ナノ秒精度のタイムスタンプを返す Boost ライブラリ関数。
  • POSIX Clock_gettime() : 指定されたクロック タイプに基づいてさまざまな精度のタイムスタンプを提供するシステム コール。たとえば、CLOCK_MONOTONIC は、高解像度の単調増加タイムスタンプを提供します。

ptime を使用したコード例:

#include <iostream>
#include <boost/chrono/system_clocks.hpp>

using namespace std;
using namespace boost::chrono;

int main() {
  auto now = system_clock::now();
  nanoseconds ts = duration_cast<nanoseconds>(now - system_clock::from_time_t(0));
  
  cout << "Timestamp: " << ts.count() << " nanoseconds" << endl;
  
  return 0;
}

Clock_gettime を使用したコード例():

#include <iostream>
#include <time.h>

using namespace std;

int main() {
  timespec ts;
  
  clock_gettime(CLOCK_MONOTONIC, &ts);
  
  cout << "Timestamp: " << ts.tv_sec << " seconds, "
       << ts.tv_nsec << " nanoseconds" << endl;
  
  return 0;
}

以上がLinux 上の C で高精度のタイミングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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