Python 3.12 vs Python 3.13 – 性能测试


Python 3.13 上周正式发布了稳定版,主要变化包括一个新的交互式解释器、对在自由线程模式(无全局解释锁,no-GIL)下运行的实验性支持 (PEP 703),以及即时编译器 (PEP 744)。这些改进预计将带来性能的适度提升。

近日,开发者在AMD Ryzen 7000系列和第13代Intel Core处理器的电脑上,对Python 3.13与Python 3.12进行了性能测试,共计100项不同的基准测试。

所有测试都在使用Windows 11的电脑上进行,使用的是Python 3.12.7和Python 3.13.0(均为64位版本)的pyperformance 1.11.0库。

AMD Ryzen 7000系列桌面处理器

测试的第一部分使用一台配备AMD Ryzen 9 7900处理器、DDR5内存和M.2 PCIe Gen4 NVMe驱动器的台式电脑。

下表显示了在该设备上使用Python 3.12(作为参考)和Python 3.13进行的100项测试的结果。

基准测试 Python 3.12 Python 3.13 提升倍数
2to3 226 ms 217 ms (1.04x faster) 1.04倍
async_generators 262 ms 256 ms (1.02x faster) 1.02倍
async_tree_cpu_io_mixed 514 ms 411 ms (1.25x faster) 1.25倍
async_tree_cpu_io_mixed_tg 508 ms 393 ms (1.29x faster) 1.29倍
async_tree_eager 70.9 ms 73.4 ms (1.04x slower) 1.04倍(慢)
async_tree_eager_cpu_io_mixed 303 ms 312 ms (1.03x slower) 1.03倍(慢)
... ... ... ...

结果显示,Python 3.13在以下测试中比Python 3.12有最佳性能结果:async_tree_eager_io_tg(快1.61倍),async_tree_eager_io(快1.54倍),async_tree_io_tg(快1.54倍)。

然而,你可能会注意到一些测试的性能下降,特别是在coverage(慢1.36倍),create_gc_cycles(慢1.13倍),regex_v8(慢1.13倍)。

此外,你可以根据属于特定组别的基准测试来检查Python 3.13和Python 3.12之间的性能差异。

下表显示了与Python 3.12相比,Python 3.13的基准测试组的几何平均值。

基准测试组 Python 3.13 与 Python 3.12
apps 1.06x faster
asyncio 1.22x faster
math 1.07x faster
regex 不显著
serialize 1.05x faster
startup 1.04x slower
template 1.03x faster

第13代Intel Core移动处理器

测试的第二部分使用一台配备Intel Core i3-1315U处理器(也用于笔记本电脑)、DDR4内存和M.2 PCIe Gen4 NVMe驱动器的迷你电脑。

下表显示了在该设备上使用Python 3.12(作为参考)和Python 3.13进行的98项测试的结果。由于在Python 3.13的此配置中无法运行,因此跳过了“dask”测试。

基准测试 Python 3.12 Python 3.13 提升倍数
2to3 260 ms 256 ms (1.01x faster) 1.01倍
async_generators 253 ms 251 ms (1.01x faster) 1.01倍
async_tree_cpu_io_mixed 544 ms 428 ms (1.27x faster) 1.27倍
async_tree_cpu_io_mixed_tg 546 ms 412 ms (1.33x faster) 1.33倍
async_tree_eager 78.7 ms 83.9 ms (1.07x slower) 1.07倍(慢)
... ... ... ...

结果显示,Python 3.13在以下测试中比Python 3.12有最佳性能结果:asyncio_tcp_ssl(快1.51倍),async_tree_io_tg(快1.43倍),async_tree_eager_io(快1.40倍)。

然而,你可能会注意到一些测试的性能下降,特别是在coverage(慢3.85倍),regex_v8(慢1.26倍),telco(慢1.19倍)。

此外,你可以根据属于特定组别的基准测试来检查Python 3.13和Python 3.12之间的性能差异。

下表显示了与Python 3.12相比,Python 3.13的基准测试组的几何平均值。

基准测试组 Python 3.13 与 Python 3.12
apps 不显著
asyncio 1.19x faster
math 1.06x faster
regex 1.04x slower
serialize 1.02x faster
startup 1.01x slower
template 1.02x slower

相關推薦

2024-10-09

Python 3.13 现已正式发布,这是一个 Python 编程语言的最新主要版本。与 Python 3.12 相比,此版本包含许多新功能和优化。(与上一个候选版本 3.13.0rc3 相比,3.13.0 包含两个小错误修复以及一些文档和测试更改。) Python 3.13 中

2023-07-11

Meta 正致力于推动 Python 项目采纳 PEP 703 提案,以改进 Python 代码的多线程性能。PEP 703 指的是 Making the Global Interpreter Lock Optional in CPython,让全局解释器锁在 CPython 中成为可选。 该提案建议向 CPython 添加构建配置 (--disable-gil),

2023-10-15

Python 3.13.0 首个 alpha 已发布,目前处于非常早期的开发阶段。 本次发布的 Python 3.13 a1 是计划发布的七个 alpha 版本中的第一个。 发布 alpha 是为了更方便地测试新功能、修复错误,以及测试发布过程。请注意,这是一个预览版

2024-05-11

Python 3.13 Beta 1 已发布,主要变化包括改进的交互式解释器,以及实验性即时编译器 (JIT),这将带来性能上的提升。 至于备受关注的 no-GIL,目前自由线程构建模式已进入实验阶段。 PEP 703(Making the Global Interpreter Lock Optional,

2024-10-03

Python 3.13.0 RC3 现已发布。公告称,​​除非发现任何严重错误,否则此版本预计将成为 3.13.0 的最终版本。3.13.0 的正式版本现定于 2024-10-07 星期一发布。 RC3 是一个计划外的候选版本,源于临时发现的几个问题。主要是由于增量

2024-10-10

e 版本升级至 44.0.0(#37661) [RlsLB] 修复死锁(#37459) [Python Otel] 使用  call arena 管理 call tracer 生命周期(#37460) C++ [OTel C++] 修复添加和删除回调时出现的竞争问题。(#37485) Python [Backport to 1.67.x] 添加模板并支

2024-04-11

Python 3.12.3 和 3.13.0a6 现已发布。v3.12.3 是最新的维护版本,包含 300 多个 commit;v3.13.0a6 则是 Python 3.13 的最后一个 alpha 版本,距离该版本功能冻结还有最后的一个月。 3.13 的亮点内容包括: 在交互式解释器中,异常回溯现在

2022-05-18

据 Python 基金会博客介绍,开发者 Sam Gross 在 2022 Python 语言峰会上带来了一个新提案:完全移除 CPython 解释器的 GIL- 全局解释器锁,使 Python 程序获得更快的性能 —— 尤其是多线程程序。 Python 有多个版本,包括 JVM 、 .NET CLR

2023-04-11

自 Python 1.5(1997 年)以来,PyInterpreterState 结构就被添加到了 CPython,允许开发者在一个进程中同时运行多个 Python 解释器。然而,多个解释器在同一进程中运行时,并不能真正地相互隔离。同一进程中的解释器始终共享大量全局

2022-11-07

Python 3.12.0 首个 alpha 版本已发布,这是 Python 3.12 的早期开发者预览版。 目前 Python 3.12 处于开发阶段,3.12.0a1 是计划中的七个 alpha 版本中的第一个,许多新特性仍在计划和编写之中。下面简单介绍与 3.11 相比,3.12 系列的主

2022-11-17

Python 3.12.0 第二个 alpha 版本已发布,这是 Python 3.12 的早期开发者预览版。 目前 Python 3.12 处于开发阶段,3.12.0a2 是计划中的七个 alpha 版本中的第二个,许多新特性仍在计划和编写之中。下面简单介绍与 3.11 相比,3.12 系列的

2023-01-12

Python 3.12.0 第四个 alpha 版本已发布,这是 Python 3.12 的早期开发者预览版。 目前 Python 3.12 处于开发阶段,3.12.0a4 是计划的七个 alpha 版本中的第四个,许多新特性仍在计划和编写之中。下面简单介绍与 3.11 相比,3.12 系列的主

2023-08-08

Python 3.12.0 发布了第 1 个 RC 版本。 开发团队表示,进入候选版本阶段后,只接受经过 review 且修复明确错误的代码。RC2(也是最后一个候选版本)计划于 2023 年 9 月 4 日发布,而 3.12.0 的正式版本计划于 2023 年 10 月 2 日发布。

2022-12-08

Python 社区为 6 个不同的分支同时发布了更新,包括:Python 3.11.1, 3.10.9, 3.9.16, 3.8.16, 3.7.16 和 3.12.0 alpha 3。 这一系列的更新主要是为了修复安全问题,有些问题影响了从 Python 3.7 到 3.12 的所有版本,有些则只影响其中数个版本,