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

Computation time of processor varies on execution, each time by using gettimeofday() in a C program

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

我在计算的开始和结束时使用了 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 or branch prediction may be non-deterministic, and because context switches, preemption, page faults, interrupts 等...随时发生)。

在实践中,仔细阅读time(7) (maybe you also want to use clock_gettime(2) and/or clock(3) and/or time(1)...)。 Set-up 你的基准测试至少持续一秒钟(因此多次重复你的基准测试功能)。 运行 几个基准和同一个基准的好几倍。