5

**********************オリジナル編集************************


Linux システムで時刻を取得するために、さまざまな種類の時計を使用しています。

rdtsc, gettimeofday, clock_gettime

すでに次のようなさまざまな質問を読んでいます。

しかし、私は少し混乱しています:


粒度、解像度、精度、精度の違いは何ですか?


粒度(または解像度または精度)精度は同じものではありません(私が正しければ...)

たとえば、「clock_gettime」を使用している間、精度は次のように10ミリ秒です。

struct timespec res;
clock_getres(CLOCK_REALTIME, &res):

実行時に得られるように、粒度 (1 秒あたりのティック数として定義) は 100 Hz (または 10 ミリ秒) です。

 long ticks_per_sec = sysconf(_SC_CLK_TCK);

上記のコードが示唆するように、精度はナノ秒単位です。

struct timespec gettime_now;

clock_gettime(CLOCK_REALTIME, &gettime_now);
time_difference = gettime_now.tv_nsec - start_time;

以下のリンクで、これが Linux の粒度のグローバルな定義であり、変更しない方がよいことがわかりました。

http://wwwagss.informatik.uni-kl.de/Projekte/Squirrel/da/node5.html#fig:clock:hw

したがって、私の質問は、上記の発言が正しかった場合、および次のとおりです。

a) rdtsc と gettimeofday (コマンドを使用) の粒度を確認できますか?

b) それらを (何らかの方法で) 変更できますか?


**********************編集番号 2************************

いくつかの新しい時計をテストしました。情報を共有したいと思います。

a) 以下のページでは、David Tereiが、さまざまな時計とその性能を比較する優れたプログラムを作成しました。

https://github.com/dterei/Scraps/tree/master/c/time

b) Raxmanが提案したようにomp_get_wtimeもテストしましたが、nsecの精度が見つかりましたが、「clock_gettime(このWebサイトで行ったように)よりも優れているわけではありません:

http://msdn.microsoft.com/en-us/library/t3282fe5.aspx

Windows 向けの時間関数だと思います。

CLOCK_REALTIME を使用する場合よりも、 CLOCK_MONOTONICを使用する clock_gettime の方が良い結果が得られます。最初はPROCESSING時間と他のREAL TIMEをそれぞれ計算するため、これは正常です。

c) Intel 関数ippGetCpuClocksも見つけましたが、最初に登録することが必須であるため、テストしていません。

http://software.intel.com/en-us/articles/ipp-downloads-registration-and-licensing/

...または試用版を使用することもできます

4

1 に答える 1

21
  • 精度は情報量、つまり報告する有効桁数です。(たとえば、私の身長は 2 メートル、1.8 メートル、1.83 メートル、1.8322 メートルです。これらの測定値はすべて正確ですが、ますます正確になっています。)

  • 正確性とは、報告された情報と真実との関係です。(たとえば、「身長 1.70 m」は「1.8 m」よりも正確ですが、実際には正確ではありません。)

  • 粒度または解像度は、タイマーが測定できる最小の時間間隔です。たとえば、粒度が 1 ミリ秒の場合、ナノ秒の精度で結果を報告してもほとんど意味がありません。

Linux では、粒度が増加する使用可能なタイマーは次のとおりです。

  • clock()から<time.h>(20 ミリ秒または 10 ミリ秒の分解能?)

  • gettimeofday()Posix から<sys/time.h>(マイクロ秒)

  • clock_gettime()Posix上(ナノ秒?)

C++ では、<chrono>ヘッダーはこれに関してある程度の抽象化を提供し、std::high_resolution_clock可能な限り最高のクロックを提供しようとします。

于 2013-05-24T17:26:07.393 に答える