![UNIX的“时间”命令对于基准测试是否足够准确?[关闭],第1张 UNIX的“时间”命令对于基准测试是否足够准确?[关闭],第1张](/aiimages/UNIX%E7%9A%84%E2%80%9C%E6%97%B6%E9%97%B4%E2%80%9D%E5%91%BD%E4%BB%A4%E5%AF%B9%E4%BA%8E%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%E6%98%AF%E5%90%A6%E8%B6%B3%E5%A4%9F%E5%87%86%E7%A1%AE%EF%BC%9F%5B%E5%85%B3%E9%97%AD%5D.png)
time对于运行一秒钟的基准测试,它可以产生足够好的时间,否则,
exec()与运行时间相比,该过程花费的时间可能会很大。
但是,在进行基准测试时,应注意上下文切换。也就是说,另一个进程可能正在使用CPU,因此与基准测试竞争CPU并增加了其运行时间。为了避免与其他进程争用,您应该运行如下基准:
sudo chrt -f 99 /usr/bin/time --verbose <benchmark>
要么
sudo chrt -f 99 perf stat -ddd <benchmark>
sudo chrt -f99以优先级99在FIFO实时类中运行基准,这使您的进程成为最高优先级的进程,并避免了上下文切换(您可以进行更改,
/etc/security/limits.conf以便不需要特权进程即可使用实时优先级)。
它还可以
time报告所有可用的统计信息,包括基准测试发生的上下文切换次数,通常应为0,否则您可能需要重新运行基准测试。
perf stat -ddd比提供更多信息,
/usr/bin/time并显示诸如每周期指令,分支和高速缓存未命中等信息。
最好禁用CPU频率缩放和增强功能,以使CPU频率在基准测试期间保持恒定,以获得一致的结果。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)