处理器的计算时间因执行而异,每次在 C 程序中使用 gettimeofday()

标签 c linux time gettimeofday

我正在尝试比较 computation time使用不同的 C 库与 gettimeofday() 进行性能比较通过包括 time.hsys/time.h头文件。

我用了gettimeofday()在我计算的开始和结束时取差值。但是每次我执行我的 C 代码时,我都会得到波动的时间作为答案。例如

0.007 sec,
0.004 sec,
0.009 sec etc. 

除了手动执行 50 次这样的执行并取所有结果的平均值之外,有什么方法可以取 50 次这样的结果的平均值。

最佳答案

But each time I execute my C code, I get fluctuating time as answer.

这种波动与 C 或 gettimeofday 无关。当前的处理器和操作系统使这样的执行时间波动(例如,因为 cache missesbranch prediction 可能是不确定的,并且因为 context switchespreemptionpage faultsinterrupts 等......发生在任何时候时间)。

实践中仔细阅读time(7) (也许您还想使用 clock_gettime(2) 和/或 clock(3) 和/或 time(1) ...)。将您的基准设置为至少持续一秒钟(因此多次重复您的基准功能)。运行多个基准测试和多次相同的基准测试。

关于处理器的计算时间因执行而异,每次在 C 程序中使用 gettimeofday(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48923306/

相关文章:

c++ - Linux 服务器中的接收缓冲区大小

c - 获取实验变量时使用变量

c - 为什么在我的程序中 "cat"一个FIFO特殊文件或创建一个FIFO特殊文件后没有出现shell提示?

gwt - 大型 GWT 项目和编译时间问题

c - 嵌套if和&&有什么区别?

linux - Shell 脚本段错误 - AWS

linux - Linux 驱动程序中的 platform_get_resource 是什么?

java - 在 Maven 中,我如何发现依赖于特定依赖项的内容?

Python:将时间舍入到最接近的秒和分钟

c# - 从一组闹钟中获取第一个闹钟时间