Python性能分析与优化

  |  

摘要: 《Python性能分析与优化》这本书

【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:算法题刷刷
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings



性能分析基础

  • 什么是性能分析
    • 基于事件的性能分析
    • 统计式性能分析
  • 性能分析的重要性
  • 性能分析可以分析什么
    • 运行时间
    • 瓶颈在哪里
  • 内存消耗和内存泄漏
  • 过早优化的风险
  • 运行时间复杂度
  • 性能分析最佳实践
    • 建立回归测试套件
    • 思考代码结构
    • 耐心
    • 尽可能多地收集数据
    • 数据预处理
    • 数据可视化

性能分析器

  • 认识新朋友:性能分析器
  • cProfile
    • 工具的局限
    • 支持的API
    • Stats类
    • 性能分析示例
  • line_profiler
    • kernprof
    • kernprof注意事项
    • 性能分析示例

可视化——利用GUI理解性能分析数据

  • KCacheGrind/pyprof2calltree
    • 安装和用法
    • 性能分析器示例:TweetStats
    • 性能分析器示例:倒排索引
  • RunSnakeRun
    • 安装和用法
    • 性能分析示例:最小公倍数
    • 性能分析示例:用倒排索引查询

优化每一个细节

  • 函数返回值缓存和函数查询表
    • 用列表或链表做查询表
    • 用字典做查询表
    • 二分查找
    • 查询表使用案例
  • 使用默认参数
  • 列表综合表达式与生成器
  • ctypes
    • 加载自定义ctypes
    • 加载一个系统库
  • 字符串连接
  • 其他优化技巧

多线程与多进程

  • 并行与并发
  • 多线程
  • 线程
    • 用thread模块创建线程
    • 用threading模块创建线程
  • 多进程
  • Python多进程

常用的优化方法

  • PyPy
    • 安装PyPy
    • JIT编译器
    • 沙盒
    • JIT优化
    • 代码示例
  • Cython
    • 安装Cython
    • 建立一个Cython模块
    • 调用C语言函数
    • 定义类型
    • 定义函数类型
    • Cython示例
    • 定义类型的时机选择
    • 限制条件
  • 如何选择正确的工具
    • 什么时候用Cython
    • 什么时候用PyPy

用Numba、Parakeet和pandas实现极速数据处理

  • Numba
  • pandas
  • Parakeet

付诸实践

  • 需要解决的问题
    • 从网站上抓取数据
    • 数据预处理
  • 编写初始代码
    • 分析代码性能
    • 数据分析代码的优化

Share