计算Python中发出的CPU指令总数/内部指令数



我需要测试代码的性能,这些代码将是客观的,并且在所有机器上大致相同。计时代码不起作用,因为它与您或我的机器规格有关,但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}

摘录自我链接的上一个问题,希望这能帮助

最新更新