0

我想测量 C 中一些数学函数的执行时间。(我有一个计算大量数学的库,我想知道单次调用需要多少时间)。

现在,我使用getrusageorGetProcessTimesclock_gettime/gettimeofdayorGetSystemTimeAsFileTime但它们不够精确,当我测量单个呼叫时,它们总是显示 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 回答