20 分钟
工程化

性能分析与优化

使用 cProfile 定位性能瓶颈

  • 使用 cProfile 分析性能
  • 常见优化技巧
  • 算法复杂度意识

cProfile 性能分析

示例代码(可运行)

常见优化技巧

示例代码(可运行)

时间复杂度

示例代码(可运行)
💡优化原则

先测量再优化,别瞎猜。80%时间花在20%代码上。选对数据结构比微优化重要。可读性优先,要优化再说。

预测输出
print("x" in set([1,2,3]))
找 Bug循环里用+=拼字符串,每次都生成新对象,时间复杂度是O(n²)。
result = "" for word in words: result = result + word
填空题填写空白处的代码
import cProfile cProfile.() # 开始分析
选择题

列表in操作的复杂度?

资深工程师加餐

底层原理 · 大厂视角 · 工程经验,点卡片展开

常见根因:内存泄漏导致 OOM 被系统杀掉、连接/文件句柄没关闭耗尽、事件循环里混入同步阻塞、未捕获异常让进程退出。12-Factor App 的建议很实用:配置环境化、日志当成事件流输出、进程保持无状态(状态放数据库/缓存),这样才能随时加副本做水平扩展。

挑战任务

性能挑战

简单+50 XP

对比不同方法求素数的性能。

性能挑战
2 个测试用例

课后作业

缓存优化

中等+20 XP

用字典缓存斐波那契计算结果。

缓存优化
1 个测试用例