使用 Python 3.15 对 web-edit 进行性能分析:火焰图和源代码热力图
摘要
Simon Willison 使用 Python 3.15 内置的采样分析器,对他的新应用 web-edit 进行性能分析,发现保留混合换行符占用了大部分 CPU 时间,并演示了如何使用这些新工具生成火焰图和源代码热力图。
暂无内容
查看缓存全文
缓存时间: 2026/10/13 22:48
# 研究:使用 Python 3.15 对 web-edit 进行性能分析:火焰图和源码热力图
来源:https://simonwillison.net/2026/Oct/12/python-3-15-web-edit-profiling/
研究 (https://simonwillison.net/elsewhere/research/)使用 Python 3\.15 对 web\-edit 进行性能分析:火焰图和源码热力图 (https://github.com/simonw/research/tree/main/python-3-15-web-edit-profiling#readme)—— 使用 Python 3\.15 内置的 \`profiling\.sampling\` 对未经修改的 web\-edit 应用进行性能分析后发现,在繁忙的编辑工作负载中,保留混合换行符占据了大部分开销:在记录的 15,296 个 CPU 调用栈中,\`preserve\_endings\` 出现在 64\.8% 的调用栈中,而 \`SequenceMatcher\.find\_longest\_match\` 占叶节点样本的 38\.3%。对所有线程进行采样至关重要,因为 95\.1% 的调用栈来自 AnyIO 的工作线程,仅分析主线程会漏掉这些调用栈。
我让 Codex 中的 GPT\-6 Astra Extra High 使用全新的 Python 3\.15 性能分析器 (https://simonwillison.net/2026/Oct/12/python-3-15/#a-sampling-profiler)对我新开发的 web\-edit 应用 (https://simonwillison.net/2026/Oct/12/web-edit/)进行分析,以此全面测试这个分析器:
> `我需要一个使用 Python 3\.15 对 PyPI 上的「web\-edit」应用生成火焰图和热力图的演示 \- 先做研究,然后为我制作这些演示`
以下是生成的示例火焰图 (https://simonw.github.io/research/python-3-15-web-edit-profiling/artifacts/flamegraph.html)和热力图 (https://simonw.github.io/research/python-3-15-web-edit-profiling/artifacts/heatmap/index.html)。
相似文章
Python 3.15 的超低开销解释器性能分析模式 – Ken Jin 的博客
Ken Jin 的博客介绍了 Python 3.15 新增的超低开销解释器性能分析模式,该模式利用双调度表为 JIT 编译器实现高效轨迹记录,相比之前的方法减少了性能下降。
Profiling.sampling – 统计性性能剖析器
Python 3.15 引入了 profiling.sampling 模块,即 Tachyon,一种统计性性能剖析器,它会定期采样堆栈快照,开销极小,适用于开发和生产环境。
@mattpocockuk:我刚刚尝试并非常喜爱的一个工作流:1. 使用 /grill-with-docs,讨论一个新的 UI 功能 2. 它问我一个除非做原型开发否则无法回答的问题 …
Matt Pocock 分享了一个利用 Claude Code 的 /grill-with-docs 和 /prototype 命令的工作流,用于迭代 UI 设计,并在继续之前总结从原型开发中学到的经验。
@RisingSayak: 我意识到,无法分析的东西就无法优化。这就是为什么我在Diffusers中开始了一个小项目,来……
Sayak Paul 描述了一个使用 torch.compile 分析和优化 Diffusers 流水线的项目,并宣布由 Ari G. 教授的相关教程系列。
@WillNessAI:我基于 @mattpocockuk 的 grilling 技能构建了一个专注于前端的变体,它改善了我构建新应用和……
WillNessAI 为 Claude 构建了一个专注于前端的 Matt Pocockock 的 grilling 技能变体,支持多种变体的快速原型设计和迭代反馈,并将其集成到他的 Wayfinder 工作流中。