- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
假设我想对两个程序进行基准测试:foo.py 和 bar.py。
几千次运行以及 time python foo.py
和 time 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/
对于我的问题,我找不到更好的措辞。 在我的应用程序中的某个时刻,我设置了一些非常密集的动画。问题是,在高端设备上,动画运行流畅且赏心悦目。另一方面,我测试过的一台低端设备在制作动画时表现非常糟糕。 试
我正在修补 OTP 模块 ( yubico_pam ),并尝试访问管理员选择的控制标志(例如必需,足够, ETC)。 有什么想法吗?这是否可行(无需解析文件)? 最佳答案 无法在 API 中查询此信息
我有一些为 Linux 编写的 C 代码,依赖于套接字和 arpa/inet.h 以及 libusb.h,我想在 MinGW 下为 Windows 编译它。 (请注意,当前项目只有一个非常简单的 Ma
我是一名优秀的程序员,十分优秀!