Python 3.14 来了:速度究竟如何?
Python 3.14 来了:速度究竟如何?
简介
2024 年 11 月,我写过一篇博客《Is Python Really That Slow?》(“Python 真有那么慢吗?”),在那篇文章中我测试了多个 Python 版本,并指出这个语言在性能方面一直在稳步提升。
今天是 2025 年 10 月 8 日,正好是 Python 3.14 官方发布后的第二天。让我们重新运行这些基准测试,看看新版本的 Python 有多快吧!
💡 提示:如果你不想看表格和图表,只想直接看结论,可以跳到文章末尾。
关于“基准测试容易误导”的简短说明
是的,虽然我会分享基准测试的结果,但我还是得再次提醒,就像我在上一篇文章中说过的那样:
这种“通用型”的基准测试其实并不太有用。
做这些测试很有趣(我也正是因此而做它们),但仅靠几个简单的小脚本,根本不可能全面反映出 Python 解释器这种复杂系统的真实性能表现。
我设计的测试只运行纯 Python 代码,避免依赖任何外部库,尤其是用 C 写的函数。
毕竟除了解释器本身外,C 语言写的底层代码通常不会因为 Python 升级而显著变快,所以没必要把它纳入测试。
当然,现实中的应用往往会混合使用 Python 与原生扩展(C、C++、Rust 等),
所以我的测试脚本虽然很适合评估纯 Python 性能,但并不能代表真实世界的应用。
👉 总之,请把这些测试结果当作“一个数据点”,而不是 Python 性能的“最终定论”。
测试矩阵(The Testing Matrix)
以下是我这次的测试维度,共 5 个方面:
1. 语言与版本
CPython:3.9、3.10、3.11、3.12、3.13、3.14 PyPy:3.11 Node.js:24 Rust:1.90
2. Python 解释器类型
标准(Standard) 即时编译(Just-In-Time,JIT,仅限 3.13+) 无 GIL 自由线程(Free-Threading,FT,仅限 3.13+)
3. 测试脚本
fibo.py:递归计算斐波那契数列bubble.py:对随机数列表执行冒泡排序(大量循环,无递归)
4. 线程模式
单线程 4 线程并行独立计算
5. 测试环境
Framework 笔记本,Ubuntu 24.04(Intel Core i5 CPU) MacBook,macOS Sequoia(Apple M2 CPU)
💬 你可能会觉得把 Node.js 和 Rust 放进测试有点奇怪。
其实我只是想用相同的算法写成 JavaScript 和 Rust 版本,以便从 Python 生态外获得一些性能对比参考。
测试脚本(The Test Scripts)
fibo.py
deffibo(n):
if n <= 1:
return n
else:
return fibo(n-1) + fibo(n-2)
在我的电脑上,计算第 40 个斐波那契数大约需要几秒,因此后续测试都使用 fibo(40)。
bubble.py
defbubble(arr):
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
我选择了包含 10,000 个随机数的数组,使排序耗时几秒左右。
⚠️ 这些函数并非性能最优写法。
我选择它们只是为了测试不同解释器的表现,而非追求最快速度。
一个递归、一个非递归,可以覆盖两种典型代码风格。
我为基准测试写了一个小框架,每个函数运行三次取平均值。
完整脚本已发布在我的 GitHub 仓库。
基准测试 #1:单线程 Fibonacci
我测量了运行 fibo(40) 的时间(秒),每个版本执行三次取平均值。
| 3.14 | 6.59 | 6.39 | |
表中最后一列显示相对于 3.14 的速度比例。
小于 1 表示更慢,大于 1 表示更快。
分析
Python 3.14 比 3.13 快约 **27%**。 Python 3.11 是性能提升的转折点,从“非常慢”跨入“还不错”。 PyPy 依然惊艳,比 3.14 快约 5 倍。 Rust 如预期般“遥遥领先”。
JIT 与 Free-Threading 版本比较
从 3.13 开始,CPython 提供三种模式:
标准(Standard)、即时编译(JIT)、自由线程(FT,无 GIL)。
| 3.14 标准 | 6.59 | 6.39 | |
💭 结论:
JIT 在这个递归测试中几乎无提升。 FT 在单线程下依然略慢,但比 3.13 时改善明显(速度达到标准版的 91%)。
基准测试 #2:单线程冒泡排序
| 3.14 | 2.18 | 2.05 | |
macOS 比 Linux 略快,但整体比例一致。
3.14 再次是最快的 CPython。
PyPy 比 3.14 快 18 倍,甚至比 Node 快 3 倍。
基准测试 #3:多线程 Fibonacci
我启动 4 个线程同时运行 fibo(40),记录从开始到全部完成的总时间。
| 3.14 | 32.60 | 24.96 | |
注意:此测试不包含 Node 与 Rust,因为它主要与 Python 的 GIL 有关。
解释器对比
| 3.14 标准 | 32.60 | 24.96 | |
🚀 Free-Threading 在 3.14 中性能大幅提升,
多线程 Fibonacci 速度约为标准解释器的 3.1 倍!
基准测试 #4:多线程冒泡排序
4 个线程各自排序 10,000 个随机数。
| 3.14 | 10.55 | 8.27 | |
解释器比较
| 3.14 FT | 6.23 | 3.02 | 2.03× |
🧩 Free-Threading 在此测试中同样出色:
macOS 上快约 2 倍 Linux 上也快约 2 倍
JIT 在 macOS 上略慢,但差距可以忽略。
结论(Conclusions)
CPython 3.14 是目前最快的版本。 如果暂时无法升级,请至少使用 3.11 以上版本。 JIT 暂未带来显著性能提升。 Free-Threading(无 GIL) 在多线程 CPU 密集型任务中表现优秀。 PyPy 的速度依然惊人。
你是否也测试过 Python 3.14?
欢迎在评论区分享你的结果!
作者: Miguel Grinberg
原文链接:https://blog.miguelgrinberg.com/post/python-3-14-is-here-how-fast-is-it