我正在尝试比较 computation time
使用不同的 C 库与 gettimeofday()
进行性能比较通过包括 time.h
和 sys/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 misses 或 branch prediction 可能是不确定的,并且因为 context switches , preemption , page faults , interrupts 等......发生在任何时候时间)。
实践中仔细阅读time(7) (也许您还想使用 clock_gettime(2) 和/或 clock(3) 和/或 time(1) ...)。将您的基准设置为至少持续一秒钟(因此多次重复您的基准功能)。运行多个基准测试和多次相同的基准测试。
关于处理器的计算时间因执行而异,每次在 C 程序中使用 gettimeofday(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48923306/