0

Cでいくつかの数学関数の実行時間を測定したいと思います(多くの数学を計算するライブラリがあり、1回の呼び出しにかかる時間を知りたいです)。

今のところ、getrusageorGetProcessTimesclock_gettime/gettimeofdayorを使用GetSystemTimeAsFileTimeしていますが、精度が十分ではありません。単一の呼び出しを測定すると、常に 0 が表示されます...

「x」関数呼び出しを実行できることはわかっていますが、平均時間はかかります。C Win/Lin用の正確なタイマーはありますか?非常に正確で、単一の関数呼び出しの壁/CPU時間を測定できますか?

私は使用できませんboost(純粋なC)、これについても知っています(まだ十分に正確ではありません):

clock_t start = clock();
/*Do something*/
clock_t end = clock();
float seconds = (float)(end - start) / CLOCKS_PER_SEC;

そしてこれ(上記と同じ):

  time_t start,end;
  double dif;
  time (&start);
  // Do some calculation.
  time (&end);
  dif = difftime (end,start);

そして、これを試してみました:QueryPerformanceCounterQueryPerformanceFrequency. rdtscまた、時間を測定するために使用すべきではないことも知っています。他に何ができますか?

4

1 に答える 1

1

タイム スタンプの代わりに、ハードウェア固有のパフォーマンス カウンターにアクセスする方法を確認することをお勧めします。Windows プラットフォームを想定している場合は、HCP Referenceを参照してください。

于 2013-09-03T08:20:00.053 に答える