gpt4 book ai didi

linux - UNIX `time` 命令对于基准测试是否足够准确?

转载 作者:IT老高 更新时间:2023-10-28 12:37:04 24 4
gpt4 key购买 nike

假设我想对两个程序进行基准测试:foo.py 和 bar.py。

几千次运行以及 time python foo.pytime python bar.py 各自的平均值是否足以分析和比较它们的速度?


编辑:此外,如果每个程序的执行时间都在亚秒以下(假设不是上述情况),那么 time 仍然可以使用吗?

最佳答案

time 为运行超过一秒的基准测试生成足够好的时间,否则 exec() 进程所花费的时间与其运行时间相比可能会很大。

但是,在进行基准测试时,您应该注意上下文切换。也就是说,另一个进程可能正在使用 CPU,从而与您的基准测试竞争 CPU 并增加其运行时间。为避免与其他进程发生争用,您应该运行如下基准测试:

sudo chrt -f 99 /usr/bin/time --verbose <benchmark>

或者

sudo chrt -f 99 perf stat -ddd <benchmark>

sudo chrt -f 99 在 FIFO 实时类中以优先级 99 运行您的基准测试,这使您的进程成为最高优先级进程并避免上下文切换(您可以更改您的 /etc/security/limits.conf 以便它不需要特权进程来使用实时优先级)。

它还使 time 报告所有可用的统计信息,包括您的基准测试发生的上下文切换次数,通常应该为 0,否则您可能希望重新运行基准测试。

perf stat -ddd/usr/bin/time 提供更多信息,并显示诸如每周期指令、分支和缓存未命中等信息。

最好禁用 CPU 频率缩放和提升,以便 CPU 频率在基准测试期间保持恒定以获得一致的结果。

关于linux - UNIX `time` 命令对于基准测试是否足够准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9006596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com