每年十月,Python 新版本发布后,总有一批开发者急着想知道“这次到底快了多少”。今年轮到 3.15,一位作者用自己非正式的基准测试,把 3.10 到 3.15 的 CPython、PyPy,以及 Node.js 和 Rust 都拉出来跑了一遍。如果你还在纠结要不要升级,这篇实测能给你一个比较靠谱的参考。
先说结论:Python 3.15 在单线程整数计算上只比 3.14 快了约 3% 到 4%,基本可以忽略;但它的 JIT(即时编译,解释器在运行时把热点代码编译成机器码以加速执行)版本终于发力,在递归 Fibonacci 测试上比标准解释器快了 20%,在冒泡排序测试上快了 28%。这是 JIT 首次在性能上明显超过同版本的标准解释器,相当值得关注。自由线程(Free-threading,即去掉全局解释器锁 GIL 的实验版本)在单线程下没有优势,但在多线程场景可能更有潜力。而 PyPy(一个自带 JIT 的 Python 解释器实现)依旧碾压所有 CPython 版本,在递归测试上达到 5.5 倍速度,在冒泡排序上达到 18 倍,甚至在某些场景超过了 Node.js。Rust 依然是天花板,但差距也在意料之中。
测试方法很直接:两个程序,一个用递归算斐波那契数列(fibo.py),一个用冒泡排序排一万个随机数(bubble.py)。每个程序分别跑单线程和 4 线程版本,共四种组合。所有测试都在同一台 Linux 笔记本(Intel Core i5)上运行,每个测试跑三次取平均。作者明确说这不是全面性能画像,只是感受一下各版本之间的变化趋势。
单线程 fibo(40) 的结果:3.15 用时 6.9361 秒,比 3.14 的 7.1659 秒快约 3%。但看历史,3.11 和 3.14 才是两次显著提速的版本,分别比上代快了 70% 和 23%,3.15 只是小步改进。PyPy 只用 1.2517 秒,Node.js 1.3899 秒,Rust 0.0898 秒。有趣的是,3.15 的 JIT 版本只用了 5.7625 秒,比标准版快 20%,这也是 JIT 第一次在同版本内明显领先。自由线程版耗时 7.0298 秒,和标准版几乎一样。
单线程 bubble(10000) 上的趋势类似:3.15 用时 1.9716 秒,略快于 3.14 的 2.0575 秒。但 3.12 和 3.13 反而有轻微回退。PyPy 0.1073 秒,Node.js 0.0643 秒,Rust 0.0391 秒。JIT 版 1.5435 秒,比标准版快 28%,自由线程版 2.6808 秒,稍慢。作者强调,最让人兴奋的是 JIT 终于不再是摆设,而是能实打实带来性能提升。
多线程的结果在原文后半部分被截断,但结合前文可推断:由于 GIL 优化和自由线程的存在,多线程场景下各版本差异会更大,PyPy 在多线程中依然表现出色。

到

这些图在原文中是博客的社交分享和订阅按钮,并不影响技术内容。真正的测试图表从

开始,包括单线程 fibo、JIT/FT 对比、单线程 bubble、多线程 fibo、多线程 bubble 等。
对普通 Python 开发者来说,这篇实测的启示有三点:
- 如果只跑单线程纯 CPU 计算,从 3.14 升到 3.15 几乎感受不到差别;但从 3.10 升到 3.15,整体提速接近 2.3 倍,所以三年以上没升级的可以放心动身。
- 如果你的代码有大量热点函数,并且愿意开启 JIT(在 3.13+ 中通过 `-X jit` 启用),那么 3.15 的 JIT 能带来额外 20% 到 28% 的提升,值得一试。
- 对于追求极致性能且允许使用替代解释器的场景,PyPy 仍然是最方便的选择;而 Rust 依然是性能上限,适合做扩展模块。
最后提醒一点:这个基准只覆盖了递归和纯循环,不涉及 I/O 密集、列表操作、字典访问等日常高频场景。实际项目的性能还要看具体负载,升级前建议用自己项目跑一遍基准测试。










这些图标是原文页面上的订阅和分享链接,忽略即可。核心数据都在

到

的图表中,文中已用表格呈现。
一句话总结:Python 3.15 不是一次性的大跳跃,但 JIT 的成熟让这场升级有了新的理由——尤其是对计算密集型的 Python 代码。如果你还在用 3.12 或更早版本,3.15 绝对值得升级。
内容与图片版权归原作者所有 · 原文: https://blog.miguelgrinberg.com/post/how-fast-is-python-3-15