大纲
性能优化的前提
性能问题的定义及分析定位
性能优化
性能优化的前提
保证程序正确
可信赖的测试
有收益
保证程序正确
如果程序的运行结果是错误的(非你所想要的预期结果),那么这样的情况下进行性能优化是没有意义的。
可信赖的测试
方便,易执行的测试操作;
可验证你所做的修改并不会影响已有功能的正确执行。
有收益
投入和产出要符合预期,或者产出和投入相匹配。
性能问题的定义及分析定位
性能问题的定义
- CPU占用高
- 内存消耗大
- 执行用时长
- I/O
- 网络
性能分析
选择工具
结果分析
工具
time/timeit,简单高效,但输出信息太少
profile/cprofile,标准库,接口简单,但是开销大
ncalls:函数被调用的次数
tottime:函数的总耗时,子函数的调用时间不计算在内
percall:tottime / ncalls
cumtime:函数加上其所有子函数的总耗时
line_profiler,分析每一行代码
vprof
参考链接:http://v.youku.com/v_show/id_XMzEyMTA5MDY4OA==.html?spm=a2h3j.8428770.3416059.1