1、性能分析工具
cProfile、hotshot、profile、runsnake(可视化cProfile分析结果)、line_profiler(逐行分析)、memory_profiler(诊断内存,安装psutil可提速,mprof功能可用于采样画图)、heapy(分析堆占用,处理内存泄漏)、dowser(实时画出变量实例)、dozer、dis(检查字节码,字节码越多执行越慢)、coverage.py(测试代码覆盖率)、perf(linux内存工具)、GIL可视化
2、元组列表字典集合优化
- 使用bisect模块
- 使用内部tim排序
- 元组缓存于运行时环境,不需要分配内存
- 元组要比列表创建快得多,因为不用访问操作系统
- 字典需要更多的内存,而且性能依赖于散列函数
- 集合内部也使用散列表,add操作为O(1)
- 字典或集合初始最小长度为8,然后以4倍增长,到50000时以2倍增长
3、迭代器和生成器
- for循环内部是迭代器
- 没特殊情况多用迭代器和生成器,性能略好内存更少,且可兼容多CPU或计算机场景
- 内存分配并不便宜,重用已分配的内存可提升速度
- 矢量化操作时使用numpy效率可提高几十倍(内存本地化、连续化)
4、并发编程
- 使用gevent、tornado、asyncio实现异步IO,特殊情况下会有几十倍的提升
(持续更新......)
——————————————————————————————
- 注:参考《python高性能编程》