我正在尝试通过包含time.h
和sys/time.h
头文件来比较使用不同的 C 库与gettimeofday()
进行性能比较的computation time
。
我在计算的开始和结束时使用了gettimeofday()
,并取了差额。但是每次我执行我的 C 代码时,我都会得到波动的时间作为答案。例如
0.007 sec,
0.004 sec,
0.009 sec etc.
有没有办法我可以取 50 个此类结果的平均值,而不是手动执行 50 个这样的执行并取所有结果的平均值。
但是每次我执行 C 代码时,我都会得到波动的时间作为答案。
这种波动与 C 或gettimeofday
无关。当前的处理器和操作系统使这种执行时间波动(例如,因为缓存未命中或分支预测可能是不确定的,并且因为上下文切换,抢占,页面错误,中断等......随时发生)。
在实践中,请仔细阅读 time(7)(也许您还想使用 clock_gettime(2) 和/或时钟 (3) 和/或时间 (1)...)。将基准测试设置为至少持续一秒钟(因此请多次重复基准测试函数)。运行多个基准测试,并多次运行相同的基准测试。