在IPython中,既可以用timeit分析一小段代码的性能,也可以在运行脚本的时候对整个脚本进行分析。对这两种性能分析方式,我们都将予以介绍。
具体步骤
首先,我们要测量一个代码片段的执行时间。
- 测量代码片段的执行时间。
以pylab模式启动IPython。
创建一个包含1000个整数的数组,其取值范围在0到1000之间。
测量在该数组中查找“任何事情的答案”——42所需要的时间。没错,42是“任何事情的答案”。如果你对此心存疑问,请浏览http://en.wikipedia.org/wiki/42_%28number%29。
- 分析一个脚本的性能。
我们将分析一个小脚本的性能。该脚本对一系列不同大小的、包含随机数的矩阵求逆。NumPy数组的.I
属性(注意是大写的I)表示数组的逆矩阵。
可以用如下方式,对该脚本的运行时间进行测量。
可以使用p
选项对脚本进行性能分析。
攻略小结
我们用性能分析工具对上述NumPy脚本的运行过程进行了分析。下表对分析工具的输出项目进行了总结。
列 | 描述 |
---|---|
ncalls |
调用次数 |
tottime |
总的函数执行时间 |
percall |
单次调用的执行时间,即tottime/ncalls |
cumtime |
函数的累计执行时间,包括该函数本身的执行时间、在该函数内部调用其他函数花费的时间和递归调用花费的时间 |