非常精确的C计时器?如此精确地测量单个函数调用

时间:2013-09-02 13:36:56

标签: c performance time benchmarking

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

现在,我使用getrusageGetProcessTimesclock_gettime/gettimeofdayGetSystemTimeAsFileTime,但它们不够精确,当我测量单个呼叫时,它们总是显示为0。 ..

我知道我可以做'x'函数调用但是我会有平均时间。 C Win / Lin有没有精确的计时器,如此精确,可以测量单个函数调用wall / 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来衡量时间。我还能做什么?

1 个答案:

答案 0 :(得分:1)

您可能希望了解如何访问特定于硬件的性能计数器,而不是时间戳。假设Windows平台,您可能需要查看HCP Reference