处理器的计算时间因执行而异,每次在 C 程序中使用 gettimeofday()
Computation time of processor varies on execution, each time by using gettimeofday() in a C program
我正在尝试通过包含 time.h
和 sys/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 你的基准测试至少持续一秒钟(因此多次重复你的基准测试功能)。 运行 几个基准和同一个基准的好几倍。
我正在尝试通过包含 time.h
和 sys/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 你的基准测试至少持续一秒钟(因此多次重复你的基准测试功能)。 运行 几个基准和同一个基准的好几倍。