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

标签 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 来测量时间。我还能做什么?

最佳答案

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

关于c - C 的定时器非常精确?如此精确地测量单个函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18574634/

相关文章:

c - strncmp() 表达式中的 strlen() 是否会破坏在 strcmp() 上使用 strncmp() 的目的?

java - google face API 对所有图像的处理速度很慢?

python - raw_input 时间有限?

date - 如何将毫秒转换为人类可读的形式?

c - 宏扩展期间出现意外语法错误

3幅图像之间的比较

c - OpenMP 大大减慢了 for 循环

java - 这是准确的性能测试吗?

php - PHP 中的 Time() 函数始终显示相同的值

c - 如何链接正确的库以便 __aeabi_idiv 和 __aeabi_idivmod 工作?