性能分析有两种:基于事件的性能分析和统计式性能分析。
基于事件的性能分析
也称轨迹性能分析器(tracing profiler),是通过收集程序执行过程中的具体事件进行工作的。它会产生大量数据,监听的时间越多,数据量越大。这导致它们不太实用,在性能分析时不能作为首选;但是当其它性能分析方法不够用或者不够精确时,它可以作为最后的选择。
Code Example
import profile
import sys
def profiler(frame, event, arg):
print('Profiler: %r %r' % (event, arg))
sys.setprofile(profiler)
print(1+2)
Output
Profiler: 'c_call' <built-in function print>
3
Profiler: 'c_return' <built-in function print>
Profiler: 'return' None
统计式性能分析
统计式性能分析器以固定的时间间隔对程序计数器进行抽样统计,它的结果是对真实值的统计近似。它的优点在于:
- 分析的数据少
- 对性能造成的影响更小。
性能分析大指标
- 运行时间
- 内存消耗