测量 Python 和 Java 实现之间的性能差异?
Measuring performance difference between Python and Java implementations?
我想比较同一算法的两种不同实现(Python 和 Java)的性能。我 运行 终端上的脚本(使用 Ubuntu 18)像这样:
time script_name
我不确定这有多准确。是否有可能提高该基准测试的准确性?也许有一种方法可以删除 Python 或 Java?
中的任何限制或设置
time
命令的准确性对于大多数测试来说可能没问题。
但如果您愿意,您可以编写第二个 Python 脚本来使用 import subprocess
进行计时,然后使用 subprocess.call()
函数(或 subprocess
模块)到 运行 算法的两个版本。
您的计时脚本还可以 import time
,然后在算法 运行 之前和之后执行 datetime.datetime.now().time()
,以显示经过了多少时间。
如 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>
.
我想比较同一算法的两种不同实现(Python 和 Java)的性能。我 运行 终端上的脚本(使用 Ubuntu 18)像这样:
time script_name
我不确定这有多准确。是否有可能提高该基准测试的准确性?也许有一种方法可以删除 Python 或 Java?
中的任何限制或设置time
命令的准确性对于大多数测试来说可能没问题。
但如果您愿意,您可以编写第二个 Python 脚本来使用 import subprocess
进行计时,然后使用 subprocess.call()
函数(或 subprocess
模块)到 运行 算法的两个版本。
您的计时脚本还可以 import time
,然后在算法 运行 之前和之后执行 datetime.datetime.now().time()
,以显示经过了多少时间。
如 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>
.