The performance of Python 3.14.8 and Python 3.15.0 was compared on computers with the AMD Ryzen 7000 series and the 13th-generation of Intel Core processors for desktops, laptops or mini PCs. Both interpreters were 64-bit Python builds running on Windows 11. The benchmarks used pyperformance 1.14.0, with pyperf 2.10.0 as the measurement framework.

Interpretation of the results

Each timing below isthe arithmetic mean of the benchmark’s mean execution times across repeated test sessions, with each session weighted equally. Calibration and warmup values are excluded. Performance factors are calculated from these averaged times, rather than by averaging the reported speedup factors. This produces one combined result for each benchmark.

Lower times are better. Python 3.14 serves as the reference. A result of 1.50× faster means that Python 3.15 takes about two-thirds as long, or 33.33% less elapsed time. A result of 1.20× slower means 20% more elapsed time. The “Time change” column shows the percentage change relative to Python 3.14; negative values indicate shorter execution times.

The overall result is the geometric mean of the per-benchmark speedup factors. Each paired benchmark receives equal weight in this calculation, regardless of its execution time. This summarizes performance across the benchmark suite, rather than a prediction of how much faster an entire application will run. Timings are rounded for readability; all calculations use unrounded values.

Blue results indicate shorter execution times, and red results indicate longer execution times. Changes of at least 1.10× are shown in bold. † marks measurements that varied considerably or changed direction between sessions. The magnitude of these averaged results, as well as small differences near parity, should be interpreted with caution. The averaged tables are descriptive; they do not claim statistical significance for every difference.

Overall performance of Python 3.15 relative to Python 3.14
Computer Paired benchmarks Geometric mean speedup Equivalent time change
AMD Ryzen 9 7900 122 1.451× faster -31.10%
Intel Core i3-1315U 118 1.451× faster -31.10%

The identical value of 1.451× in both rows is due to rounding. The calculated values are approximately 1.451413092× for AMD and 1.451321030× for Intel. The benchmark sets contain 122 and 118 tests, respectively, so they are not identical. This result does not imply the same benefit for every application or an advantage for either processor manufacturer.

Python 3.15 is faster across most of the tested workloads, with an overall geometric mean speedup of approximately 1.45× on both computers. The biggest gains come from Ascii85, Base32 and Base85 encoding benchmarks. Excluding these six exceptional results, the rest of the suite improves by approximately 1.20×. Several Base16 and regular-expression benchmarks become slower, so the benefit depends on the workload.

AMD Ryzen 9 7900 desktop

The AMD system is a desktop with a Ryzen 9 7900 processor, DDR5 RAM and an M.2 PCIe Gen4 NVMe drive.

There are 122 paired benchmarks on this computer. The averaged results give Python 3.15 a geometric mean speedup of 1.451×, equivalent to approximately 31.1% less elapsed time in the normalized suite summary. The median benchmark speedup is 1.184×, showing that the overall average is lifted by a small number of exceptionally large improvements.

The largest gains are in base32_large (134.748× faster), ascii85_large (68.675× faster), base85_large (63.446× faster). The small-input versions of these encoding benchmarks also improve substantially.

The largest clear averaged slowdowns are in base16_large (1.223× slower), base16_small (1.222× slower), regex_effbot (1.222× slower). These regressions are particularly relevant to applications that rely heavily on those operations.

The AMD results were broadly consistent across repeated measurements. Startup without the site module stays close to parity, and logging_silent includes a noisy measurement, so their small or precise changes deserve less weight than the large, repeatable gains.

AMD Ryzen 9 7900 desktop: averaged benchmark times
Benchmark Python 3.14.8 Python 3.15.0 Time change
2to3 229.3 ms 207.6 ms (1.105× faster) -9.47%
ascii85_large 797.9 ms 11.62 ms (68.675× faster) -98.54%
ascii85_small 14.88 ms 0.3875 ms (38.394× faster) -97.40%
async_generators 269.8 ms 237.9 ms (1.134× faster) -11.82%
async_tree_cpu_io_mixed 420.2 ms 393.4 ms (1.068× faster) -6.38%
async_tree_cpu_io_mixed_tg 404.4 ms 380.8 ms (1.062× faster) -5.83%
async_tree_eager 124.2 ms 98.19 ms (1.265× faster) -20.94%
async_tree_eager_cpu_io_mixed 349 ms 322.5 ms (1.082× faster) -7.60%
async_tree_eager_cpu_io_mixed_tg 365.3 ms 342.9 ms (1.065× faster) -6.12%
async_tree_eager_io 652.8 ms 588.9 ms (1.108× faster) -9.78%
async_tree_eager_io_tg 610.1 ms 558.3 ms (1.093× faster) -8.49%
async_tree_eager_memoization 190.5 ms 170.7 ms (1.116× faster) -10.40%
async_tree_eager_memoization_tg 243.9 ms 224 ms (1.089× faster) -8.17%
async_tree_eager_tg 184.9 ms 166.3 ms (1.112× faster) -10.07%
async_tree_io 617.5 ms 558.8 ms (1.105× faster) -9.50%
async_tree_io_tg 581.5 ms 511.6 ms (1.137× faster) -12.02%
async_tree_memoization 308.5 ms 278 ms (1.109× faster) -9.86%
async_tree_memoization_tg 267.1 ms 240.1 ms (1.112× faster) -10.11%
async_tree_none 248.5 ms 225.8 ms (1.101× faster) -9.15%
async_tree_none_tg 215.4 ms 194.4 ms (1.108× faster) -9.73%
asyncio_tcp 458.4 ms 435.2 ms (1.053× faster) -5.05%
asyncio_tcp_ssl 1.258 sec 1.219 sec (1.031× faster) -3.05%
asyncio_websockets 141.6 ms 125.6 ms (1.128× faster) -11.33%
base16_large 4.714 ms 5.767 ms (1.223× slower) +22.34%
base16_small 252.3 us 308.3 us (1.222× slower) +22.20%
base32_large 327.6 ms 2.431 ms (134.748× faster) -99.26%
base32_small 6.227 ms 0.163 ms (38.200× faster) -97.38%
base64_large 6.746 ms 1.852 ms (3.643× faster) -72.55%
base64_small 219.5 us 169.2 us (1.297× faster) -22.91%
base85_large 272.4 ms 4.293 ms (63.446× faster) -98.42%
base85_small 4.864 ms 0.1505 ms (32.313× faster) -96.91%
bench_mp_pool 126 ms 112 ms (1.125× faster) -11.08%
bench_thread_pool 738.9 us 658.8 us (1.122× faster) -10.84%
bpe_tokeniser 2.968 sec 2.318 sec (1.280× faster) -21.90%
chameleon 9.954 ms 8.428 ms (1.181× faster) -15.33%
chaos 44.06 ms 31.3 ms (1.408× faster) -28.98%
comprehensions 12.2 us 8.117 us (1.503× faster) -33.47%
connected_components 388.3 ms 365.8 ms (1.061× faster) -5.78%
coroutines 17.05 ms 12.87 ms (1.325× faster) -24.50%
coverage 52.53 ms 48.64 ms (1.080× faster) -7.39%
create_gc_cycles 1.03 ms 0.8892 ms (1.158× faster) -13.66%
crypto_pyaes 50.48 ms 39.17 ms (1.289× faster) -22.41%
dask 720.2 ms 687.5 ms (1.048× faster) -4.54%
deepcopy 174.8 us 129.9 us (1.346× faster) -25.69%
deepcopy_memo 19.74 us 14.64 us (1.349× faster) -25.86%
deepcopy_reduce 1.899 us 1.541 us (1.232× faster) -18.83%
deltablue 2.508 ms 1.669 ms (1.503× faster) -33.46%
django_template 24.56 ms 20.47 ms (1.200× faster) -16.67%
docutils 1.425 sec 1.272 sec (1.120× faster) -10.74%
dulwich_log 48.84 ms 44.74 ms (1.092× faster) -8.40%
fannkuch 280.5 ms 208.5 ms (1.345× faster) -25.65%
fastapi_http 454.7 ms 399.9 ms (1.137× faster) -12.06%
float 57.28 ms 44.02 ms (1.301× faster) -23.16%
gc_traversal 1.807 ms 1.682 ms (1.074× faster) -6.89%
generators 23.32 ms 16.29 ms (1.431× faster) -30.14%
go 89.44 ms 59.34 ms (1.507× faster) -33.65%
hexiom 4.914 ms 3.178 ms (1.546× faster) -35.32%
html5lib 33.73 ms 28.44 ms (1.186× faster) -15.68%
json_dumps 6.731 ms 4.862 ms (1.384× faster) -27.77%
json_loads 14.53 us 13.06 us (1.113× faster) -10.15%
k_core 1.708 sec 1.616 sec (1.057× faster) -5.39%
logging_format 6.286 us 5.081 us (1.237× faster) -19.18%
logging_silent † 75.05 ns 51.26 ns (1.464× faster †) -31.69%
logging_simple 5.845 us 4.72 us (1.238× faster) -19.25%
mako 7.97 ms 6.643 ms (1.200× faster) -16.65%
many_optionals 386.7 us 297.7 us (1.299× faster) -23.02%
mdp 829.3 ms 661.3 ms (1.254× faster) -20.25%
meteor_contest 69.78 ms 60.92 ms (1.145× faster) -12.70%
nbody 89.91 ms 62.13 ms (1.447× faster) -30.89%
nqueens 65.02 ms 43.38 ms (1.499× faster) -33.28%
pathlib 232.9 ms 228.7 ms (1.018× faster) -1.80%
pickle 7.953 us 7.807 us (1.019× faster) -1.83%
pickle_dict 20.5 us 17.69 us (1.159× faster) -13.73%
pickle_list 3.041 us 2.82 us (1.078× faster) -7.26%
pickle_pure_python 217.3 us 175.2 us (1.240× faster) -19.38%
pidigits 129.7 ms 128.8 ms (1.007× faster) -0.69%
pprint_pformat 1.034 sec 0.8316 sec (1.243× faster) -19.55%
pprint_safe_repr 502.5 ms 413.3 ms (1.216× faster) -17.76%
pyflate 323 ms 239.9 ms (1.346× faster) -25.73%
python_startup 35.18 ms 34.36 ms (1.024× faster) -2.34%
python_startup_no_site † 29.09 ms 29.23 ms (1.005× slower †) +0.47%
raytrace 192.8 ms 144 ms (1.339× faster) -25.34%
regex_compile 75.55 ms 54.3 ms (1.391× faster) -28.12%
regex_dna 107.9 ms 118.7 ms (1.100× slower) +10.00%
regex_effbot 1.588 ms 1.94 ms (1.222× slower) +22.17%
regex_v8 14.92 ms 15.13 ms (1.014× slower) +1.38%
richards 31.37 ms 22.75 ms (1.379× faster) -27.47%
richards_super 35.52 ms 26.14 ms (1.359× faster) -26.42%
scimark_fft 217.5 ms 163.4 ms (1.331× faster) -24.89%
scimark_lu 77.23 ms 54.56 ms (1.416× faster) -29.35%
scimark_monte_carlo 48.66 ms 36.72 ms (1.325× faster) -24.54%
scimark_sor 93.32 ms 62.58 ms (1.491× faster) -32.94%
scimark_sparse_mat_mult 3.372 ms 2.504 ms (1.347× faster) -25.76%
shortest_path 397.5 ms 372.7 ms (1.067× faster) -6.24%
spectral_norm 77.96 ms 52.58 ms (1.483× faster) -32.55%
sphinx 617.7 ms 552.5 ms (1.118× faster) -10.56%
sqlalchemy_declarative 61.12 ms 54.38 ms (1.124× faster) -11.02%
sqlalchemy_imperative 6.798 ms 5.959 ms (1.141× faster) -12.35%
sqlglot_v2_normalize 71.32 ms 58.48 ms (1.220× faster) -18.01%
sqlglot_v2_optimize 33.61 ms 27.93 ms (1.203× faster) -16.88%
sqlglot_v2_parse 869.3 us 621.4 us (1.399× faster) -28.52%
sqlglot_v2_transpile 1.05 ms 0.7834 ms (1.340× faster) -25.39%
sqlite_synth 1.523 us 1.37 us (1.112× faster) -10.04%
subparsers 6.756 ms 5.747 ms (1.176× faster) -14.94%
sympy_expand 258.3 ms 220 ms (1.174× faster) -14.84%
sympy_integrate 11.35 ms 9.662 ms (1.175× faster) -14.90%
sympy_str 149.4 ms 124.8 ms (1.198× faster) -16.50%
sympy_sum 78.46 ms 66.41 ms (1.181× faster) -15.35%
telco 4.94 ms 4.111 ms (1.202× faster) -16.78%
tomli_loads 1.585 sec 1.023 sec (1.549× faster) -35.45%
tornado_http 99.88 ms 93.48 ms (1.068× faster) -6.41%
typing_runtime_protocols 107 us 88.07 us (1.215× faster) -17.69%
unpack_sequence 48.21 ns 31.01 ns (1.555× faster) -35.68%
unpickle 8.886 us 8.827 us (1.007× faster) -0.67%
unpickle_list 2.806 us 2.865 us (1.021× slower) +2.11%
unpickle_pure_python 157.6 us 116.6 us (1.352× faster) -26.01%
urlsafe_base64_small 340.4 us 206.1 us (1.651× faster) -39.45%
xdsl_constant_fold 24.33 ms 20.97 ms (1.160× faster) -13.81%
xml_etree_generate 59.89 ms 50.36 ms (1.189× faster) -15.92%
xml_etree_iterparse 54.9 ms 47.99 ms (1.144× faster) -12.59%
xml_etree_parse 80.08 ms 77.91 ms (1.028× faster) -2.71%
xml_etree_process 42.23 ms 34.81 ms (1.213× faster) -17.58%
Result (geometric mean) — 1.451× faster -31.10%

Units: sec = seconds; ms = milliseconds; us = microseconds; ns = nanoseconds. A common unit is used for both timings within each row. † indicates measurements requiring additional caution.

Performance by benchmark group

The following table summarizes benchmarks carrying the indicated pyperformance tag. Groups may overlap and do not cover every benchmark. The math group contains only three tests; it is not a summary of every numerical benchmark in the suite.

AMD Ryzen 9 7900 desktop: geometric mean by tag
Group Paired benchmarks Python 3.15 vs Python 3.14 Equivalent time change
apps 7 1.130× faster -11.52%
asyncio 21 1.113× faster -10.13%
math 3 1.238× faster -19.21%
regex 4 1.005× faster -0.52%
serialize 25 3.046× faster -67.17%
startup 2 1.010× faster -0.95%
template 2 1.200× faster -16.66%

Benchmarks recorded only for Python 3.14 and excluded from the paired comparison: genshi_text, genshi_xml. The supplied data does not establish why these Python 3.15 results are absent.

13th Gen Intel Core Mobile Processor

The Intel system is a mini PC with a Core i3-1315U processor, DDR4 RAM and an M.2 PCIe Gen4 NVMe drive. The i3-1315U is a mobile processor also used in laptops.

There are 118 paired benchmarks on this computer. The averaged results give Python 3.15 a geometric mean speedup of 1.451×, equivalent to approximately 31.1% less elapsed time in the normalized suite summary. The median benchmark speedup is 1.166×, showing that the overall average is lifted by a small number of exceptionally large improvements.

The largest gains are in base32_large (142.255× faster), base85_large (62.619× faster), ascii85_large (56.825× faster). The small-input versions of these encoding benchmarks also improve substantially.

The largest clear averaged slowdowns are in base16_small (1.241× slower), base16_large (1.158× slower), regex_effbot (1.133× slower). These regressions are particularly relevant to applications that rely heavily on those operations.

The Intel measurements were more variable. In particular, the reported gains for pathlib, sphinx, scimark_sor, scimark_sparse_mat_mult and spectral_norm were sensitive to the test session. Some pathlib and thread-pool measurements contain unusually slow samples. Averaging gives a useful combined view, but those individual values should not be treated as precise estimates for another machine.

Intel Core i3-1315U mini PC: averaged benchmark times
Benchmark Python 3.14.8 Python 3.15.0 Time change
2to3 277.1 ms 247.6 ms (1.119× faster) -10.65%
ascii85_large 828.8 ms 14.58 ms (56.825× faster) -98.24%
ascii85_small 15.57 ms 0.4626 ms (33.666× faster) -97.03%
async_generators 280.8 ms 230.4 ms (1.219× faster) -17.96%
async_tree_cpu_io_mixed 435.1 ms 397.7 ms (1.094× faster) -8.59%
async_tree_cpu_io_mixed_tg 423.2 ms 411.9 ms (1.027× faster) -2.66%
async_tree_eager 118.4 ms 104.9 ms (1.129× faster) -11.42%
async_tree_eager_cpu_io_mixed 382.7 ms 360.1 ms (1.063× faster) -5.90%
async_tree_eager_cpu_io_mixed_tg 383.3 ms 362 ms (1.059× faster) -5.56%
async_tree_eager_io 572.6 ms 513.3 ms (1.116× faster) -10.36%
async_tree_eager_io_tg 561.1 ms 509 ms (1.102× faster) -9.28%
async_tree_eager_memoization 216 ms 196.2 ms (1.101× faster) -9.16%
async_tree_eager_memoization_tg 247.5 ms 227.3 ms (1.089× faster) -8.19%
async_tree_eager_tg 191.6 ms 170.4 ms (1.124× faster) -11.07%
async_tree_io 593.4 ms 517.4 ms (1.147× faster) -12.81%
async_tree_io_tg 567.9 ms 495.3 ms (1.147× faster) -12.78%
async_tree_memoization 306.3 ms 274.5 ms (1.116× faster) -10.38%
async_tree_memoization_tg 285.9 ms 252.9 ms (1.130× faster) -11.54%
async_tree_none 253.3 ms 220.6 ms (1.148× faster) -12.92%
async_tree_none_tg 228.9 ms 203.7 ms (1.123× faster) -10.98%
asyncio_tcp 582.6 ms 539 ms (1.081× faster) -7.48%
asyncio_tcp_ssl 1.537 sec 1.527 sec (1.007× faster) -0.66%
asyncio_websockets 181.7 ms 157.8 ms (1.151× faster) -13.15%
base16_large 6.161 ms 7.132 ms (1.158× slower) +15.75%
base16_small 298.5 us 370.3 us (1.241× slower) +24.07%
base32_large 360.9 ms 2.537 ms (142.255× faster) -99.30%
base32_small 7.102 ms 0.1753 ms (40.509× faster) -97.53%
base64_large 8.03 ms 1.869 ms (4.297× faster) -76.73%
base64_small 266.4 us 191.1 us (1.394× faster) -28.27%
base85_large 298.1 ms 4.761 ms (62.619× faster) -98.40%
base85_small 5.369 ms 0.1747 ms (30.739× faster) -96.75%
bench_mp_pool 161.1 ms 142.6 ms (1.130× faster) -11.47%
bench_thread_pool † 1.083 ms 1.101 ms (1.017× slower †) +1.71%
bpe_tokeniser 3.575 sec 2.782 sec (1.285× faster) -22.19%
chameleon 11.36 ms 9.522 ms (1.193× faster) -16.18%
chaos 47.02 ms 35.8 ms (1.314× faster) -23.88%
comprehensions 13.38 us 9.357 us (1.430× faster) -30.09%
connected_components 366.4 ms 354.6 ms (1.033× faster) -3.22%
coroutines 16.6 ms 13.19 ms (1.258× faster) -20.53%
coverage 160.9 ms 123.6 ms (1.302× faster) -23.19%
create_gc_cycles 1.711 ms 1.428 ms (1.198× faster) -16.53%
crypto_pyaes 57.39 ms 45.55 ms (1.260× faster) -20.62%
deepcopy 206.9 us 153.5 us (1.348× faster) -25.81%
deepcopy_memo 20.81 us 15.72 us (1.323× faster) -24.44%
deepcopy_reduce 2.224 us 1.71 us (1.301× faster) -23.14%
deltablue 2.451 ms 1.839 ms (1.333× faster) -24.99%
django_template 28.24 ms 22.76 ms (1.241× faster) -19.42%
docutils 1.794 sec 1.661 sec (1.080× faster) -7.42%
fannkuch 309 ms 222.6 ms (1.388× faster) -27.96%
fastapi_http 351.1 ms 320.7 ms (1.095× faster) -8.64%
float 56.19 ms 45.04 ms (1.248× faster) -19.85%
gc_traversal 2.853 ms 2.545 ms (1.121× faster) -10.81%
generators 25.72 ms 16.94 ms (1.518× faster) -34.11%
go 92.33 ms 67.09 ms (1.376× faster) -27.34%
hexiom 4.839 ms 3.443 ms (1.405× faster) -28.84%
html5lib 44.02 ms 38.9 ms (1.131× faster) -11.62%
json_dumps 7.362 ms 5.696 ms (1.292× faster) -22.63%
json_loads 17.18 us 16.01 us (1.073× faster) -6.82%
k_core 1.977 sec 1.91 sec (1.035× faster) -3.39%
logging_format 7.111 us 5.871 us (1.211× faster) -17.44%
logging_silent 65.46 ns 50.39 ns (1.299× faster) -23.02%
logging_simple 6.635 us 5.423 us (1.223× faster) -18.26%
mako 7.544 ms 6.543 ms (1.153× faster) -13.28%
many_optionals 585.5 us 513.5 us (1.140× faster) -12.30%
mdp 970.9 ms 767 ms (1.266× faster) -21.00%
meteor_contest 86.82 ms 75.98 ms (1.143× faster) -12.49%
nbody 82.94 ms 59.03 ms (1.405× faster) -28.83%
nqueens 73.7 ms 52.9 ms (1.393× faster) -28.22%
pathlib † 88.82 ms 77.87 ms (1.141× faster †) -12.33%
pickle 9.156 us 8.568 us (1.069× faster) -6.41%
pickle_dict 24.76 us 20.2 us (1.226× faster) -18.43%
pickle_list 4.1 us 3.752 us (1.093× faster) -8.48%
pickle_pure_python 246.7 us 206 us (1.198× faster) -16.50%
pidigits † 163.1 ms 163.7 ms (1.003× slower †) +0.34%
pprint_pformat 1.186 sec 0.9441 sec (1.257× faster) -20.42%
pprint_safe_repr 585.2 ms 476.1 ms (1.229× faster) -18.64%
pyflate 343.9 ms 267 ms (1.288× faster) -22.36%
python_startup 31.09 ms 30.31 ms (1.026× faster) -2.53%
python_startup_no_site † 23.24 ms 23.16 ms (1.003× faster †) -0.32%
raytrace 223.5 ms 164.2 ms (1.361× faster) -26.54%
regex_compile 94.27 ms 76.29 ms (1.236× faster) -19.07%
regex_dna 136.6 ms 135.9 ms (1.005× faster) -0.49%
regex_effbot 1.71 ms 1.937 ms (1.133× slower) +13.30%
regex_v8 † 16.61 ms 15.72 ms (1.057× faster †) -5.36%
richards 32.36 ms 24.82 ms (1.304× faster) -23.29%
richards_super 36.74 ms 28.57 ms (1.286× faster) -22.22%
scimark_fft 212.5 ms 158.1 ms (1.344× faster) -25.58%
scimark_lu 69.29 ms 52.02 ms (1.332× faster) -24.92%
scimark_monte_carlo 50.14 ms 36.87 ms (1.360× faster) -26.47%
scimark_sor † 103.8 ms 57.98 ms (1.790× faster †) -44.12%
scimark_sparse_mat_mult † 3.352 ms 2.368 ms (1.415× faster †) -29.35%
shortest_path 403.9 ms 382 ms (1.057× faster) -5.40%
spectral_norm † 77.37 ms 50.15 ms (1.543× faster †) -35.18%
sphinx † 812.6 ms 725.8 ms (1.120× faster †) -10.69%
sqlglot_v2_normalize 85.23 ms 68.7 ms (1.241× faster) -19.39%
sqlglot_v2_optimize 40.98 ms 34.54 ms (1.186× faster) -15.71%
sqlglot_v2_parse 949.5 us 737.1 us (1.288× faster) -22.37%
sqlglot_v2_transpile 1.18 ms 0.9215 ms (1.281× faster) -21.92%
sqlite_synth 1.832 us 1.704 us (1.075× faster) -6.96%
subparsers 7.632 ms 6.672 ms (1.144× faster) -12.57%
sympy_expand 337.3 ms 290.4 ms (1.162× faster) -13.93%
sympy_integrate 14.24 ms 12.71 ms (1.120× faster) -10.72%
sympy_str 196.8 ms 171.8 ms (1.145× faster) -12.67%
sympy_sum 100.9 ms 88.9 ms (1.135× faster) -11.88%
telco 5.451 ms 4.658 ms (1.170× faster) -14.55%
tomli_loads 1.679 sec 1.096 sec (1.532× faster) -34.74%
tornado_http 105.5 ms 102.7 ms (1.027× faster) -2.61%
typing_runtime_protocols 127.7 us 110.8 us (1.153× faster) -13.24%
unpack_sequence 37.45 ns 31.33 ns (1.195× faster) -16.32%
unpickle 9.764 us 9.974 us (1.022× slower) +2.15%
unpickle_list 3.154 us 3.144 us (1.003× faster) -0.31%
unpickle_pure_python 161.4 us 123.3 us (1.310× faster) -23.64%
urlsafe_base64_small 417.2 us 235.3 us (1.773× faster) -43.58%
xdsl_constant_fold 35.23 ms 31.16 ms (1.131× faster) -11.56%
xml_etree_generate 65.1 ms 56.4 ms (1.154× faster) -13.37%
xml_etree_iterparse 69.49 ms 61.14 ms (1.137× faster) -12.02%
xml_etree_parse 108.3 ms 103.5 ms (1.047× faster) -4.44%
xml_etree_process 46.24 ms 38.3 ms (1.207× faster) -17.17%
Result (geometric mean) – 1.451× faster -31.10%

Units: sec = seconds; ms = milliseconds; us = microseconds; ns = nanoseconds. A common unit is used for both timings within each row. † indicates measurements requiring additional caution.

Performance by benchmark group

The following table summarizes benchmarks carrying the indicated pyperformance tag. Groups may overlap and do not cover every benchmark. The math group contains only three tests; it is not a summary of every numerical benchmark in the suite.

Intel Core i3-1315U mini PC: geometric mean by tag
Group Paired benchmarks Python 3.15 vs Python 3.14 Equivalent time change
apps 7 1.108× faster -9.77%
asyncio 21 1.114× faster -10.27%
math 3 1.204× faster -16.97%
regex 4 1.037× faster -3.60%
serialize 25 3.044× faster -67.15%
startup 2 1.015× faster -1.43%
template 2 1.196× faster -16.40%

Benchmarks recorded only for Python 3.14 and excluded from the paired comparison: dask, genshi_text, genshi_xml, sqlalchemy_declarative, sqlalchemy_imperative. The supplied data does not establish why these Python 3.15 results are absent.

Encoding performance improvements

The largest changes form a clear pattern. The averaged base32_large result improves by about 135× on AMD and 142× on Intel. The large Ascii85 and Base85 benchmarks improve by roughly 57-69×, while the corresponding small-input benchmarks improve by approximately 31-41×. These are specialized operations with much larger gains than most of the suite.

This pattern is consistent with the Python 3.15 release notes: the Base32 and Ascii85/Base85 implementations were rewritten in C, and Base64 also received optimizations. These changes provide a plausible explanation for the observed improvements, although these measurements do not isolate the effect of each code change. The benchmarks measure elapsed time, so they do not establish memory savings.

How the exceptional encoding gains affect the overall average
Benchmark selection AMD speedup Intel speedup
All paired benchmarks 1.451× faster 1.451× faster
Excluding the six Ascii85 / Base32 / Base85 benchmarks 1.203× faster 1.197× faster
Median per-benchmark speedup 1.184× faster 1.166× faster

Removing those six benchmarks leaves 116 paired tests on AMD and 112 on Intel. Their geometric mean speedups are 1.203× and 1.197×, respectively – equivalent to about 17% less elapsed time in these normalized summaries. This is a useful additional view for applications that do little Base32 or Base85 processing.

Implications for application performance

The application-tagged group improves by approximately 1.13× on AMD and 1.11× on Intel. Template rendering improves by about 1.20× on both systems. These results suggest worthwhile gains for some Python-heavy workloads, while also showing why a 1.45× suite average should not be applied directly to every application.

Encoding performance is mixed: the large Base32 and Base85 gains coexist with slower Base16 results. Similarly, the regular-expression group has only a small net improvement, while regex_effbot becomes slower on both computers and regex_dna becomes slower on AMD. Startup averages remain close to parity. The practical effect depends on the operations performed by an application.

The official Python documentation also describes the tail-calling interpreter used by Windows 64-bit release binaries. The tested versions record different compiler identifiers. These results compare complete interpreter builds, so individual gains cannot be attributed solely to the JIT, the compiler or a particular interpreter change.

Both computers show almost the same full-suite average, but they use different hardware and have slightly different paired benchmark sets. This does not establish that either processor vendor benefits more.

Measurement notes

The retained measurements contain 20 worker processes per benchmark per session, with 60 timing values for most benchmarks and 200 for each startup benchmark. The combined timings give equal weight to the session means. Outliers are retained, and unavailable benchmarks are excluded rather than assigned an assumed result.

A † marker is applied when the comparison factor changes by more than 10% between sessions, the mean improvement changes to a slowdown or vice versa, or a timing sample set has a coefficient of variation above 25%. This is a descriptive flag chosen for this article, rather than a formal significance test. It helps identify averages whose size (or small direction near parity) is less reliable.