Cでいくつかの数学関数の実行時間を測定したいと思います(多くの数学を計算するライブラリがあり、1回の呼び出しにかかる時間を知りたいです)。
今のところ、getrusage
orGetProcessTimes
とclock_gettime/gettimeofday
orを使用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);
そして、これを試してみました:QueryPerformanceCounter
とQueryPerformanceFrequency
. rdtsc
また、時間を測定するために使用すべきではないことも知っています。他に何ができますか?