我想比较同一算法的两种不同实现(Python和Java)的性能。我在终端上使用Ubuntu 18运行脚本,如下所示:
time script_name
我不确定这有多准确。是否可以提高该基准的准确性?也许有一种方法可以消除Python或Java中的任何限制或设置?
答案 0 :(得分:1)
对于大多数测试,time
命令的准确性可能很好。
但是,如果您愿意,您可以编写第二个Python脚本来使用import subprocess
进行计时,然后使用subprocess.call()
函数(或subprocess
模块中的几个相关函数之一)运行两种版本的算法。
您的计时脚本还可以import time
,然后在算法运行之前和之后执行datetime.datetime.now().time()
,以显示经过了多少时间。
答案 1 :(得分:1)
如this answer中所述,使用time
对程序进行基准测试的正确方法是以下命令:
sudo chrt -f 99 /usr/bin/time --verbose <benchmark>
。但是,请注意,只有在算法花费至少一秒钟的时间才能执行,否则这是正确的,否则exec
调用可能会占用基准的很大一部分。
This answer建议改用perf stat
,例如:
perf stat -r 10 -d <your app and arguments>
。