我需要测试代码的性能,这些代码将是客观的,并且在所有机器上大致相同。计时代码不起作用,因为它与您或我的机器规格有关,但CPU发出的计数指令起作用(略有不同(。
我可以在Linux中使用strace,但我的天哪,它很慢,我只想要整体调用,而不是单独调用。
说:
def foo(bar):
for i in range(bar):
print(i)
foo(10)
这将在不同的机器上以不同的速度执行(请耐心等待,想象一个更复杂的算法(。但是操作量是一样的,10个ios。这一点很重要,因为如果你有一台更快的电脑,你不会注意到在我的电脑上一毫秒可能需要5秒。
有没有一种方法可以计算自Python以来完成的CPU指令数?
我这么问是因为我想知道重构是否会使我的CPU指令增加两倍。
谢谢。
您可以使用Python探查器cProfile
$ python -m cProfile euler048.py
1007 function calls in 0.061 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall
filename:lineno(function)
1 0.000 0.000 0.061 0.061 <string>:1(<module>)
1000 0.051 0.000 0.051 0.000 euler048.py:2(<lambda>)
1 0.005 0.005 0.061 0.061 euler048.py:2(<module>)
1 0.000 0.000 0.061 0.061 {execfile}
1 0.002 0.002 0.053 0.053 {map}
1 0.000 0.000 0.000 0.000 {method someMethod}
1 0.000 0.000 0.000 0.000 {range}
1 0.003 0.003 0.003 0.003 {sum}
摘录自我链接的上一个问题,希望这能帮助