卖兜搞IT

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) 的时间(秒),每个版本执行三次取平均值。

版本
Linux
macOS
相对 3.14
3.9
15.21
13.81
0.45×
3.10
16.24
14.97
0.42×
3.11
9.11
9.23
0.71×
3.12
8.01
8.54
0.78×
3.13
8.26
8.24
0.79×
3.146.596.39
—
PyPy 3.11
1.39
1.24
4.93×
Node 24
1.38
1.28
4.88×
Rust 1.90
0.08
0.10
69.82×
Image

表中最后一列显示相对于 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)。

版本
Linux
macOS
相对 3.14 标准
3.13 标准
8.26
8.24
0.79×
3.13 JIT
8.26
8.28
0.78×
3.13 FT
12.40
12.40
0.52×
3.14 标准6.596.39
—
3.14 JIT
6.59
6.37
1.00×
3.14 FT
7.05
7.27
0.91×
Image

💭 结论:

  • JIT 在这个递归测试中几乎无提升。
  • FT 在单线程下依然略慢,但比 3.13 时改善明显(速度达到标准版的 91%)。

基准测试 #2:单线程冒泡排序

版本
Linux
macOS
相对 3.14
3.9
3.77
3.29
0.60×
3.10
4.01
3.38
0.57×
3.11
2.48
2.15
0.91×
3.12
2.69
2.46
0.82×
3.13
2.82
2.61
0.78×
3.142.182.05
—
PyPy 3.11
0.10
0.14
18.14×
Node 24
0.43
0.21
6.64×
Rust 1.90
0.04
0.07
36.15×
Image

macOS 比 Linux 略快,但整体比例一致。
3.14 再次是最快的 CPython。
PyPy 比 3.14 快 18 倍,甚至比 Node 快 3 倍。


基准测试 #3:多线程 Fibonacci

我启动 4 个线程同时运行 fibo(40),记录从开始到全部完成的总时间。

版本
Linux
macOS
相对 3.14
3.9
67.87
57.51
0.46×
3.10
72.42
61.57
0.43×
3.11
45.83
36.98
0.70×
3.12
36.22
34.13
0.82×
3.13
37.20
33.53
0.81×
3.1432.6024.96
—
PyPy 3.11
7.49
6.84
4.02×
Image

注意:此测试不包含 Node 与 Rust,因为它主要与 Python 的 GIL 有关。

解释器对比

版本
Linux
macOS
相对 3.14 标准
3.13 标准
37.20
33.53
0.81×
3.13 FT
21.14
15.47
1.57×
3.14 标准32.6024.96
—
3.14 FT
10.80
7.81
3.09×
Image

🚀 Free-Threading 在 3.14 中性能大幅提升,
多线程 Fibonacci 速度约为标准解释器的 3.1 倍!


基准测试 #4:多线程冒泡排序

4 个线程各自排序 10,000 个随机数。

版本
Linux
macOS
相对 3.14
3.9
16.14
12.58
0.66×
3.10
16.12
12.95
0.65×
3.11
11.43
7.89
0.97×
3.12
11.39
9.01
0.92×
3.13
11.54
9.78
0.88×
3.1410.558.27
—
PyPy 3.11
0.54
0.59
16.65×


Image

解释器比较

版本
Linux
macOS
相对 3.14 标准
3.13 FT
9.83
5.05
1.17×
3.14 FT6.233.022.03×
Image

🧩 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