首页 » 博客
Python 3.12 vs Python 3.13 – 性能测试
2024-10-15 13:52:57 阅读(121)

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.12Python 3.13提升倍数
2to3 226 ms217 ms (1.04x faster)1.04 倍
async_generators 262 ms256 ms (1.02x faster)1.02 倍
async_tree_cpu_io_mixed 514 ms411 ms (1.25x faster)1.25 倍
async_tree_cpu_io_mixed_tg 508 ms393 ms (1.29x faster)1.29 倍
async_tree_eager 70.9 ms73.4 ms (1.04x slower)1.04 倍(慢)
async_tree_eager_cpu_io_mixed 303 ms312 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.12Python 3.13提升倍数
2to3 260 ms256 ms (1.01x faster)1.01 倍
async_generators 253 ms251 ms (1.01x faster)1.01 倍
async_tree_cpu_io_mixed 544 ms428 ms (1.27x faster)1.27 倍
async_tree_cpu_io_mixed_tg 546 ms412 ms (1.33x faster)1.33 倍
async_tree_eager 78.7 ms83.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