Производительность Python 3.14.8 и Python 3.15.0 сравнивалась на компьютерах с процессорами AMD Ryzen 7000-й серии и процессорами Intel Core 13-го поколения для настольных ПК, ноутбуков или мини-ПК. В обоих случаях использовались 64-разрядные сборки Python под Windows 11. Тестирование проводилось с помощью набора pyperformance 1.14.0 и измерительного инструмента pyperf 2.10.0.
Интерпретация результатов
Каждое значение времени в таблицах представляет собой среднее арифметическое средних времён данного теста в повторных измерительных сессиях. Всем сессиям присваивается одинаковый вес. Значения калибровки и прогрева исключены. Коэффициенты ускорения рассчитываются по усреднённым временам, а не путём усреднения ранее полученных коэффициентов. Таким образом, для каждого теста представлен один сводный результат.
Меньшее время означает лучший результат. За основу сравнения принят Python 3.14. Результат в 1,50 раза быстрее означает, что Python 3.15 требуется около двух третей времени эталонной версии, то есть на 33,33% меньше. Результат в 1,20 раза медленнее означает увеличение времени на 20%. Столбец «Изменение времени» показывает процентное изменение относительно Python 3.14. Отрицательные значения означают сокращение времени выполнения.
Общий результат — это среднее геометрическое коэффициентов ускорения отдельных тестов. Каждый тест, доступный для обеих версий, имеет одинаковый вес независимо от времени выполнения. Этот показатель характеризует набор тестов, а не прогнозирует ускорение приложения в целом. Время округлено для удобства чтения; все расчёты выполнены по неокруглённым значениям.
Синий цвет означает сокращение времени выполнения, а красный — его увеличение. Ускорения и замедления с коэффициентом не менее 1,10× выделены полужирным шрифтом. Символ † отмечает результаты с высокой вариативностью или сменой направления различия между сессиями. Величина таких изменений и небольшие отличия от эталонного результата требуют осторожной интерпретации. Таблицы содержат усреднённые наблюдения и не подтверждают статистическую значимость каждого различия.
| Компьютер | Тесты для обеих версий | Среднее геометрическое ускорения | Соответствующее изменение времени |
|---|---|---|---|
| AMD Ryzen 9 7900 | 122 | 1,451x быстрее | -31,10% |
| Intel Core i3-1315U | 118 | 1,451x быстрее | -31,10% |
Одинаковое значение 1,451× в обеих строках получается после округления. Рассчитанные значения составляют примерно 1,451413092× для AMD и 1,451321030× для Intel. Наборы содержат соответственно 122 и 118 тестов и поэтому не идентичны. Этот результат не означает одинакового выигрыша для всех приложений или преимущества какого-либо производителя процессоров.
Python 3.15 быстрее в большинстве исследованных задач. Среднее геометрическое коэффициентов ускорения составляет примерно 1,45× на обоих компьютерах. Наибольший прирост наблюдается в тестах кодирования Ascii85, Base32 и Base85. После исключения этих шести результатов с особенно большим ускорением показатель для оставшейся части набора составляет около 1,20×. Некоторые тесты Base16 и регулярных выражений выполняются медленнее, поэтому выигрыш зависит от характера нагрузки.
Настольный компьютер с AMD Ryzen 9 7900
Настольный компьютер AMD оснащён процессором Ryzen 9 7900, оперативной памятью DDR5 и накопителем M.2 PCIe Gen4 NVMe.
На этом компьютере доступны результаты 122 тестов для обеих версий. Среднее геометрическое коэффициентов ускорения Python 3.15 составляет 1,451×. В нормированном сводном показателе это соответствует сокращению времени примерно на 31,1%. Медиана коэффициентов ускорения составляет 1,184×, что показывает влияние небольшого числа особенно крупных ускорений на общий результат.
Наибольшее ускорение наблюдается в тестах base32_large (в 134,748 раза быстрее), ascii85_large (в 68,675 раза быстрее), base85_large (в 63,446 раза быстрее). Варианты этих тестов кодирования для малых объёмов данных также существенно ускоряются.
Наибольшие отчётливые замедления в усреднённых результатах наблюдаются в тестах base16_large (в 1,223 раза медленнее), base16_small (в 1,222 раза медленнее), regex_effbot (в 1,222 раза медленнее). Эти замедления особенно важны для приложений, в которых такие операции выполняются часто.
Результаты AMD в целом были согласованными при повторных измерениях. Время запуска без модуля site остаётся близким к результату эталонной версии, а тест logging_silent включает измерение с высокой вариативностью. Поэтому при интерпретации большее значение имеют крупные, воспроизводимые ускорения, чем небольшие различия или точная величина изменений в этих двух тестах.
| Тест | Python 3.14.8 | Python 3.15.0 | Изменение времени |
|---|---|---|---|
2to3 |
229,3 ms | 207,6 ms (1,105x быстрее) | -9,47% |
ascii85_large |
797,9 ms | 11,62 ms (68,675x быстрее) | -98,54% |
ascii85_small |
14,88 ms | 0,3875 ms (38,394x быстрее) | -97,40% |
async_generators |
269,8 ms | 237,9 ms (1,134x быстрее) | -11,82% |
async_tree_cpu_io_mixed |
420,2 ms | 393,4 ms (1,068x быстрее) | -6,38% |
async_tree_cpu_io_mixed_tg |
404,4 ms | 380,8 ms (1,062x быстрее) | -5,83% |
async_tree_eager |
124,2 ms | 98,19 ms (1,265x быстрее) | -20,94% |
async_tree_eager_cpu_io_mixed |
349 ms | 322,5 ms (1,082x быстрее) | -7,60% |
async_tree_eager_cpu_io_mixed_tg |
365,3 ms | 342,9 ms (1,065x быстрее) | -6,12% |
async_tree_eager_io |
652,8 ms | 588,9 ms (1,108x быстрее) | -9,78% |
async_tree_eager_io_tg |
610,1 ms | 558,3 ms (1,093x быстрее) | -8,49% |
async_tree_eager_memoization |
190,5 ms | 170,7 ms (1,116x быстрее) | -10,40% |
async_tree_eager_memoization_tg |
243,9 ms | 224 ms (1,089x быстрее) | -8,17% |
async_tree_eager_tg |
184,9 ms | 166,3 ms (1,112x быстрее) | -10,07% |
async_tree_io |
617,5 ms | 558,8 ms (1,105x быстрее) | -9,50% |
async_tree_io_tg |
581,5 ms | 511,6 ms (1,137x быстрее) | -12,02% |
async_tree_memoization |
308,5 ms | 278 ms (1,109x быстрее) | -9,86% |
async_tree_memoization_tg |
267,1 ms | 240,1 ms (1,112x быстрее) | -10,11% |
async_tree_none |
248,5 ms | 225,8 ms (1,101x быстрее) | -9,15% |
async_tree_none_tg |
215,4 ms | 194,4 ms (1,108x быстрее) | -9,73% |
asyncio_tcp |
458,4 ms | 435,2 ms (1,053x быстрее) | -5,05% |
asyncio_tcp_ssl |
1,258 s | 1,219 s (1,031x быстрее) | -3,05% |
asyncio_websockets |
141,6 ms | 125,6 ms (1,128x быстрее) | -11,33% |
base16_large |
4,714 ms | 5,767 ms (1,223x медленнее) | +22,34% |
base16_small |
252,3 µs | 308,3 µs (1,222x медленнее) | +22,20% |
base32_large |
327,6 ms | 2,431 ms (134,748x быстрее) | -99,26% |
base32_small |
6,227 ms | 0,163 ms (38,200x быстрее) | -97,38% |
base64_large |
6,746 ms | 1,852 ms (3,643x быстрее) | -72,55% |
base64_small |
219,5 µs | 169,2 µs (1,297x быстрее) | -22,91% |
base85_large |
272,4 ms | 4,293 ms (63,446x быстрее) | -98,42% |
base85_small |
4,864 ms | 0,1505 ms (32,313x быстрее) | -96,91% |
bench_mp_pool |
126 ms | 112 ms (1,125x быстрее) | -11,08% |
bench_thread_pool |
738,9 µs | 658,8 µs (1,122x быстрее) | -10,84% |
bpe_tokeniser |
2,968 s | 2,318 s (1,280x быстрее) | -21,90% |
chameleon |
9,954 ms | 8,428 ms (1,181x быстрее) | -15,33% |
chaos |
44,06 ms | 31,3 ms (1,408x быстрее) | -28,98% |
comprehensions |
12,2 µs | 8,117 µs (1,503x быстрее) | -33,47% |
connected_components |
388,3 ms | 365,8 ms (1,061x быстрее) | -5,78% |
coroutines |
17,05 ms | 12,87 ms (1,325x быстрее) | -24,50% |
coverage |
52,53 ms | 48,64 ms (1,080x быстрее) | -7,39% |
create_gc_cycles |
1,03 ms | 0,8892 ms (1,158x быстрее) | -13,66% |
crypto_pyaes |
50,48 ms | 39,17 ms (1,289x быстрее) | -22,41% |
dask |
720,2 ms | 687,5 ms (1,048x быстрее) | -4,54% |
deepcopy |
174,8 µs | 129,9 µs (1,346x быстрее) | -25,69% |
deepcopy_memo |
19,74 µs | 14,64 µs (1,349x быстрее) | -25,86% |
deepcopy_reduce |
1,899 µs | 1,541 µs (1,232x быстрее) | -18,83% |
deltablue |
2,508 ms | 1,669 ms (1,503x быстрее) | -33,46% |
django_template |
24,56 ms | 20,47 ms (1,200x быстрее) | -16,67% |
docutils |
1,425 s | 1,272 s (1,120x быстрее) | -10,74% |
dulwich_log |
48,84 ms | 44,74 ms (1,092x быстрее) | -8,40% |
fannkuch |
280,5 ms | 208,5 ms (1,345x быстрее) | -25,65% |
fastapi_http |
454,7 ms | 399,9 ms (1,137x быстрее) | -12,06% |
float |
57,28 ms | 44,02 ms (1,301x быстрее) | -23,16% |
gc_traversal |
1,807 ms | 1,682 ms (1,074x быстрее) | -6,89% |
generators |
23,32 ms | 16,29 ms (1,431x быстрее) | -30,14% |
go |
89,44 ms | 59,34 ms (1,507x быстрее) | -33,65% |
hexiom |
4,914 ms | 3,178 ms (1,546x быстрее) | -35,32% |
html5lib |
33,73 ms | 28,44 ms (1,186x быстрее) | -15,68% |
json_dumps |
6,731 ms | 4,862 ms (1,384x быстрее) | -27,77% |
json_loads |
14,53 µs | 13,06 µs (1,113x быстрее) | -10,15% |
k_core |
1,708 s | 1,616 s (1,057x быстрее) | -5,39% |
logging_format |
6,286 µs | 5,081 µs (1,237x быстрее) | -19,18% |
logging_silent † |
75,05 ns | 51,26 ns (1,464x быстрее †) | -31,69% |
logging_simple |
5,845 µs | 4,72 µs (1,238x быстрее) | -19,25% |
mako |
7,97 ms | 6,643 ms (1,200x быстрее) | -16,65% |
many_optionals |
386,7 µs | 297,7 µs (1,299x быстрее) | -23,02% |
mdp |
829,3 ms | 661,3 ms (1,254x быстрее) | -20,25% |
meteor_contest |
69,78 ms | 60,92 ms (1,145x быстрее) | -12,70% |
nbody |
89,91 ms | 62,13 ms (1,447x быстрее) | -30,89% |
nqueens |
65,02 ms | 43,38 ms (1,499x быстрее) | -33,28% |
pathlib |
232,9 ms | 228,7 ms (1,018x быстрее) | -1,80% |
pickle |
7,953 µs | 7,807 µs (1,019x быстрее) | -1,83% |
pickle_dict |
20,5 µs | 17,69 µs (1,159x быстрее) | -13,73% |
pickle_list |
3,041 µs | 2,82 µs (1,078x быстрее) | -7,26% |
pickle_pure_python |
217,3 µs | 175,2 µs (1,240x быстрее) | -19,38% |
pidigits |
129,7 ms | 128,8 ms (1,007x быстрее) | -0,69% |
pprint_pformat |
1,034 s | 0,8316 s (1,243x быстрее) | -19,55% |
pprint_safe_repr |
502,5 ms | 413,3 ms (1,216x быстрее) | -17,76% |
pyflate |
323 ms | 239,9 ms (1,346x быстрее) | -25,73% |
python_startup |
35,18 ms | 34,36 ms (1,024x быстрее) | -2,34% |
python_startup_no_site † |
29,09 ms | 29,23 ms (1,005x медленнее †) | +0,47% |
raytrace |
192,8 ms | 144 ms (1,339x быстрее) | -25,34% |
regex_compile |
75,55 ms | 54,3 ms (1,391x быстрее) | -28,12% |
regex_dna |
107,9 ms | 118,7 ms (1,100x медленнее) | +10,00% |
regex_effbot |
1,588 ms | 1,94 ms (1,222x медленнее) | +22,17% |
regex_v8 |
14,92 ms | 15,13 ms (1,014x медленнее) | +1,38% |
richards |
31,37 ms | 22,75 ms (1,379x быстрее) | -27,47% |
richards_super |
35,52 ms | 26,14 ms (1,359x быстрее) | -26,42% |
scimark_fft |
217,5 ms | 163,4 ms (1,331x быстрее) | -24,89% |
scimark_lu |
77,23 ms | 54,56 ms (1,416x быстрее) | -29,35% |
scimark_monte_carlo |
48,66 ms | 36,72 ms (1,325x быстрее) | -24,54% |
scimark_sor |
93,32 ms | 62,58 ms (1,491x быстрее) | -32,94% |
scimark_sparse_mat_mult |
3,372 ms | 2,504 ms (1,347x быстрее) | -25,76% |
shortest_path |
397,5 ms | 372,7 ms (1,067x быстрее) | -6,24% |
spectral_norm |
77,96 ms | 52,58 ms (1,483x быстрее) | -32,55% |
sphinx |
617,7 ms | 552,5 ms (1,118x быстрее) | -10,56% |
sqlalchemy_declarative |
61,12 ms | 54,38 ms (1,124x быстрее) | -11,02% |
sqlalchemy_imperative |
6,798 ms | 5,959 ms (1,141x быстрее) | -12,35% |
sqlglot_v2_normalize |
71,32 ms | 58,48 ms (1,220x быстрее) | -18,01% |
sqlglot_v2_optimize |
33,61 ms | 27,93 ms (1,203x быстрее) | -16,88% |
sqlglot_v2_parse |
869,3 µs | 621,4 µs (1,399x быстрее) | -28,52% |
sqlglot_v2_transpile |
1,05 ms | 0,7834 ms (1,340x быстрее) | -25,39% |
sqlite_synth |
1,523 µs | 1,37 µs (1,112x быстрее) | -10,04% |
subparsers |
6,756 ms | 5,747 ms (1,176x быстрее) | -14,94% |
sympy_expand |
258,3 ms | 220 ms (1,174x быстрее) | -14,84% |
sympy_integrate |
11,35 ms | 9,662 ms (1,175x быстрее) | -14,90% |
sympy_str |
149,4 ms | 124,8 ms (1,198x быстрее) | -16,50% |
sympy_sum |
78,46 ms | 66,41 ms (1,181x быстрее) | -15,35% |
telco |
4,94 ms | 4,111 ms (1,202x быстрее) | -16,78% |
tomli_loads |
1,585 s | 1,023 s (1,549x быстрее) | -35,45% |
tornado_http |
99,88 ms | 93,48 ms (1,068x быстрее) | -6,41% |
typing_runtime_protocols |
107 µs | 88,07 µs (1,215x быстрее) | -17,69% |
unpack_sequence |
48,21 ns | 31,01 ns (1,555x быстрее) | -35,68% |
unpickle |
8,886 µs | 8,827 µs (1,007x быстрее) | -0,67% |
unpickle_list |
2,806 µs | 2,865 µs (1,021x медленнее) | +2,11% |
unpickle_pure_python |
157,6 µs | 116,6 µs (1,352x быстрее) | -26,01% |
urlsafe_base64_small |
340,4 µs | 206,1 µs (1,651x быстрее) | -39,45% |
xdsl_constant_fold |
24,33 ms | 20,97 ms (1,160x быстрее) | -13,81% |
xml_etree_generate |
59,89 ms | 50,36 ms (1,189x быстрее) | -15,92% |
xml_etree_iterparse |
54,9 ms | 47,99 ms (1,144x быстрее) | -12,59% |
xml_etree_parse |
80,08 ms | 77,91 ms (1,028x быстрее) | -2,71% |
xml_etree_process |
42,23 ms | 34,81 ms (1,213x быстрее) | -17,58% |
| Результат (среднее геометрическое) | — | 1,451x быстрее | -31,10% |
Единицы измерения: s — секунды; ms — миллисекунды; µs — микросекунды; ns — наносекунды. В каждой строке оба времени выражены в одной единице. Символ † отмечает измерения, требующие дополнительной осторожности.
Производительность по группам тестов
Следующая таблица обобщает результаты тестов с указанным тегом в наборе pyperformance. Группы могут пересекаться и не охватывают все тесты. Группа math содержит только три теста и не представляет все численные вычисления в наборе.
| Группа (тег) | Тесты для обеих версий | Python 3.15 относительно Python 3.14 | Соответствующее изменение времени |
|---|---|---|---|
apps |
7 | 1,130x быстрее | -11,52% |
asyncio |
21 | 1,113x быстрее | -10,13% |
math |
3 | 1,238x быстрее | -19,21% |
regex |
4 | 1,005x быстрее | -0,52% |
serialize |
25 | 3,046x быстрее | -67,17% |
startup |
2 | 1,010x быстрее | -0,95% |
template |
2 | 1,200x быстрее | -16,66% |
Тесты с результатами только для Python 3.14, исключённые из сравнения: genshi_text, genshi_xml. Предоставленные данные не объясняют отсутствие этих результатов для Python 3.15.
Мини-ПК с Intel Core i3-1315U
Мини-ПК Intel оснащён процессором Core i3-1315U, оперативной памятью DDR4 и накопителем M.2 PCIe Gen4 NVMe. Модель i3-1315U — мобильный процессор, который также используется в ноутбуках.
На этом компьютере доступны результаты 118 тестов для обеих версий. Среднее геометрическое коэффициентов ускорения Python 3.15 составляет 1,451×. В нормированном сводном показателе это соответствует сокращению времени примерно на 31,1%. Медиана коэффициентов ускорения составляет 1,166×, что показывает влияние небольшого числа особенно крупных ускорений на общий результат.
Наибольшее ускорение наблюдается в тестах base32_large (в 142,255 раза быстрее), base85_large (в 62,619 раза быстрее), ascii85_large (в 56,825 раза быстрее). Варианты этих тестов кодирования для малых объёмов данных также существенно ускоряются.
Наибольшие отчётливые замедления в усреднённых результатах наблюдаются в тестах base16_small (в 1,241 раза медленнее), base16_large (в 1,158 раза медленнее), regex_effbot (в 1,133 раза медленнее). Эти замедления особенно важны для приложений, в которых такие операции выполняются часто.
Измерения на Intel показали более высокую вариативность. В частности, величина ускорения в тестах pathlib, sphinx, scimark_sor, scimark_sparse_mat_mult и spectral_norm зависела от измерительной сессии. Некоторые измерения pathlib и пула потоков содержат необычно большое время выполнения. Усреднение даёт сводную картину, но отдельные значения не являются точным прогнозом для другого компьютера.
| Тест | Python 3.14.8 | Python 3.15.0 | Изменение времени |
|---|---|---|---|
2to3 |
277,1 ms | 247,6 ms (1,119x быстрее) | -10,65% |
ascii85_large |
828,8 ms | 14,58 ms (56,825x быстрее) | -98,24% |
ascii85_small |
15,57 ms | 0,4626 ms (33,666x быстрее) | -97,03% |
async_generators |
280,8 ms | 230,4 ms (1,219x быстрее) | -17,96% |
async_tree_cpu_io_mixed |
435,1 ms | 397,7 ms (1,094x быстрее) | -8,59% |
async_tree_cpu_io_mixed_tg |
423,2 ms | 411,9 ms (1,027x быстрее) | -2,66% |
async_tree_eager |
118,4 ms | 104,9 ms (1,129x быстрее) | -11,42% |
async_tree_eager_cpu_io_mixed |
382,7 ms | 360,1 ms (1,063x быстрее) | -5,90% |
async_tree_eager_cpu_io_mixed_tg |
383,3 ms | 362 ms (1,059x быстрее) | -5,56% |
async_tree_eager_io |
572,6 ms | 513,3 ms (1,116x быстрее) | -10,36% |
async_tree_eager_io_tg |
561,1 ms | 509 ms (1,102x быстрее) | -9,28% |
async_tree_eager_memoization |
216 ms | 196,2 ms (1,101x быстрее) | -9,16% |
async_tree_eager_memoization_tg |
247,5 ms | 227,3 ms (1,089x быстрее) | -8,19% |
async_tree_eager_tg |
191,6 ms | 170,4 ms (1,124x быстрее) | -11,07% |
async_tree_io |
593,4 ms | 517,4 ms (1,147x быстрее) | -12,81% |
async_tree_io_tg |
567,9 ms | 495,3 ms (1,147x быстрее) | -12,78% |
async_tree_memoization |
306,3 ms | 274,5 ms (1,116x быстрее) | -10,38% |
async_tree_memoization_tg |
285,9 ms | 252,9 ms (1,130x быстрее) | -11,54% |
async_tree_none |
253,3 ms | 220,6 ms (1,148x быстрее) | -12,92% |
async_tree_none_tg |
228,9 ms | 203,7 ms (1,123x быстрее) | -10,98% |
asyncio_tcp |
582,6 ms | 539 ms (1,081x быстрее) | -7,48% |
asyncio_tcp_ssl |
1,537 s | 1,527 s (1,007x быстрее) | -0,66% |
asyncio_websockets |
181,7 ms | 157,8 ms (1,151x быстрее) | -13,15% |
base16_large |
6,161 ms | 7,132 ms (1,158x медленнее) | +15,75% |
base16_small |
298,5 µs | 370,3 µs (1,241x медленнее) | +24,07% |
base32_large |
360,9 ms | 2,537 ms (142,255x быстрее) | -99,30% |
base32_small |
7,102 ms | 0,1753 ms (40,509x быстрее) | -97,53% |
base64_large |
8,03 ms | 1,869 ms (4,297x быстрее) | -76,73% |
base64_small |
266,4 µs | 191,1 µs (1,394x быстрее) | -28,27% |
base85_large |
298,1 ms | 4,761 ms (62,619x быстрее) | -98,40% |
base85_small |
5,369 ms | 0,1747 ms (30,739x быстрее) | -96,75% |
bench_mp_pool |
161,1 ms | 142,6 ms (1,130x быстрее) | -11,47% |
bench_thread_pool † |
1,083 ms | 1,101 ms (1,017x медленнее †) | +1,71% |
bpe_tokeniser |
3,575 s | 2,782 s (1,285x быстрее) | -22,19% |
chameleon |
11,36 ms | 9,522 ms (1,193x быстрее) | -16,18% |
chaos |
47,02 ms | 35,8 ms (1,314x быстрее) | -23,88% |
comprehensions |
13,38 µs | 9,357 µs (1,430x быстрее) | -30,09% |
connected_components |
366,4 ms | 354,6 ms (1,033x быстрее) | -3,22% |
coroutines |
16,6 ms | 13,19 ms (1,258x быстрее) | -20,53% |
coverage |
160,9 ms | 123,6 ms (1,302x быстрее) | -23,19% |
create_gc_cycles |
1,711 ms | 1,428 ms (1,198x быстрее) | -16,53% |
crypto_pyaes |
57,39 ms | 45,55 ms (1,260x быстрее) | -20,62% |
deepcopy |
206,9 µs | 153,5 µs (1,348x быстрее) | -25,81% |
deepcopy_memo |
20,81 µs | 15,72 µs (1,323x быстрее) | -24,44% |
deepcopy_reduce |
2,224 µs | 1,71 µs (1,301x быстрее) | -23,14% |
deltablue |
2,451 ms | 1,839 ms (1,333x быстрее) | -24,99% |
django_template |
28,24 ms | 22,76 ms (1,241x быстрее) | -19,42% |
docutils |
1,794 s | 1,661 s (1,080x быстрее) | -7,42% |
fannkuch |
309 ms | 222,6 ms (1,388x быстрее) | -27,96% |
fastapi_http |
351,1 ms | 320,7 ms (1,095x быстрее) | -8,64% |
float |
56,19 ms | 45,04 ms (1,248x быстрее) | -19,85% |
gc_traversal |
2,853 ms | 2,545 ms (1,121x быстрее) | -10,81% |
generators |
25,72 ms | 16,94 ms (1,518x быстрее) | -34,11% |
go |
92,33 ms | 67,09 ms (1,376x быстрее) | -27,34% |
hexiom |
4,839 ms | 3,443 ms (1,405x быстрее) | -28,84% |
html5lib |
44,02 ms | 38,9 ms (1,131x быстрее) | -11,62% |
json_dumps |
7,362 ms | 5,696 ms (1,292x быстрее) | -22,63% |
json_loads |
17,18 µs | 16,01 µs (1,073x быстрее) | -6,82% |
k_core |
1,977 s | 1,91 s (1,035x быстрее) | -3,39% |
logging_format |
7,111 µs | 5,871 µs (1,211x быстрее) | -17,44% |
logging_silent |
65,46 ns | 50,39 ns (1,299x быстрее) | -23,02% |
logging_simple |
6,635 µs | 5,423 µs (1,223x быстрее) | -18,26% |
mako |
7,544 ms | 6,543 ms (1,153x быстрее) | -13,28% |
many_optionals |
585,5 µs | 513,5 µs (1,140x быстрее) | -12,30% |
mdp |
970,9 ms | 767 ms (1,266x быстрее) | -21,00% |
meteor_contest |
86,82 ms | 75,98 ms (1,143x быстрее) | -12,49% |
nbody |
82,94 ms | 59,03 ms (1,405x быстрее) | -28,83% |
nqueens |
73,7 ms | 52,9 ms (1,393x быстрее) | -28,22% |
pathlib † |
88,82 ms | 77,87 ms (1,141x быстрее †) | -12,33% |
pickle |
9,156 µs | 8,568 µs (1,069x быстрее) | -6,41% |
pickle_dict |
24,76 µs | 20,2 µs (1,226x быстрее) | -18,43% |
pickle_list |
4,1 µs | 3,752 µs (1,093x быстрее) | -8,48% |
pickle_pure_python |
246,7 µs | 206 µs (1,198x быстрее) | -16,50% |
pidigits † |
163,1 ms | 163,7 ms (1,003x медленнее †) | +0,34% |
pprint_pformat |
1,186 s | 0,9441 s (1,257x быстрее) | -20,42% |
pprint_safe_repr |
585,2 ms | 476,1 ms (1,229x быстрее) | -18,64% |
pyflate |
343,9 ms | 267 ms (1,288x быстрее) | -22,36% |
python_startup |
31,09 ms | 30,31 ms (1,026x быстрее) | -2,53% |
python_startup_no_site † |
23,24 ms | 23,16 ms (1,003x быстрее †) | -0,32% |
raytrace |
223,5 ms | 164,2 ms (1,361x быстрее) | -26,54% |
regex_compile |
94,27 ms | 76,29 ms (1,236x быстрее) | -19,07% |
regex_dna |
136,6 ms | 135,9 ms (1,005x быстрее) | -0,49% |
regex_effbot |
1,71 ms | 1,937 ms (1,133x медленнее) | +13,30% |
regex_v8 † |
16,61 ms | 15,72 ms (1,057x быстрее †) | -5,36% |
richards |
32,36 ms | 24,82 ms (1,304x быстрее) | -23,29% |
richards_super |
36,74 ms | 28,57 ms (1,286x быстрее) | -22,22% |
scimark_fft |
212,5 ms | 158,1 ms (1,344x быстрее) | -25,58% |
scimark_lu |
69,29 ms | 52,02 ms (1,332x быстрее) | -24,92% |
scimark_monte_carlo |
50,14 ms | 36,87 ms (1,360x быстрее) | -26,47% |
scimark_sor † |
103,8 ms | 57,98 ms (1,790x быстрее †) | -44,12% |
scimark_sparse_mat_mult † |
3,352 ms | 2,368 ms (1,415x быстрее †) | -29,35% |
shortest_path |
403,9 ms | 382 ms (1,057x быстрее) | -5,40% |
spectral_norm † |
77,37 ms | 50,15 ms (1,543x быстрее †) | -35,18% |
sphinx † |
812,6 ms | 725,8 ms (1,120x быстрее †) | -10,69% |
sqlglot_v2_normalize |
85,23 ms | 68,7 ms (1,241x быстрее) | -19,39% |
sqlglot_v2_optimize |
40,98 ms | 34,54 ms (1,186x быстрее) | -15,71% |
sqlglot_v2_parse |
949,5 µs | 737,1 µs (1,288x быстрее) | -22,37% |
sqlglot_v2_transpile |
1,18 ms | 0,9215 ms (1,281x быстрее) | -21,92% |
sqlite_synth |
1,832 µs | 1,704 µs (1,075x быстрее) | -6,96% |
subparsers |
7,632 ms | 6,672 ms (1,144x быстрее) | -12,57% |
sympy_expand |
337,3 ms | 290,4 ms (1,162x быстрее) | -13,93% |
sympy_integrate |
14,24 ms | 12,71 ms (1,120x быстрее) | -10,72% |
sympy_str |
196,8 ms | 171,8 ms (1,145x быстрее) | -12,67% |
sympy_sum |
100,9 ms | 88,9 ms (1,135x быстрее) | -11,88% |
telco |
5,451 ms | 4,658 ms (1,170x быстрее) | -14,55% |
tomli_loads |
1,679 s | 1,096 s (1,532x быстрее) | -34,74% |
tornado_http |
105,5 ms | 102,7 ms (1,027x быстрее) | -2,61% |
typing_runtime_protocols |
127,7 µs | 110,8 µs (1,153x быстрее) | -13,24% |
unpack_sequence |
37,45 ns | 31,33 ns (1,195x быстрее) | -16,32% |
unpickle |
9,764 µs | 9,974 µs (1,022x медленнее) | +2,15% |
unpickle_list |
3,154 µs | 3,144 µs (1,003x быстрее) | -0,31% |
unpickle_pure_python |
161,4 µs | 123,3 µs (1,310x быстрее) | -23,64% |
urlsafe_base64_small |
417,2 µs | 235,3 µs (1,773x быстрее) | -43,58% |
xdsl_constant_fold |
35,23 ms | 31,16 ms (1,131x быстрее) | -11,56% |
xml_etree_generate |
65,1 ms | 56,4 ms (1,154x быстрее) | -13,37% |
xml_etree_iterparse |
69,49 ms | 61,14 ms (1,137x быстрее) | -12,02% |
xml_etree_parse |
108,3 ms | 103,5 ms (1,047x быстрее) | -4,44% |
xml_etree_process |
46,24 ms | 38,3 ms (1,207x быстрее) | -17,17% |
| Результат (среднее геометрическое) | — | 1,451x быстрее | -31,10% |
Единицы измерения: s — секунды; ms — миллисекунды; µs — микросекунды; ns — наносекунды. В каждой строке оба времени выражены в одной единице. Символ † отмечает измерения, требующие дополнительной осторожности.
Производительность по группам тестов
Следующая таблица обобщает результаты тестов с указанным тегом в наборе pyperformance. Группы могут пересекаться и не охватывают все тесты. Группа math содержит только три теста и не представляет все численные вычисления в наборе.
| Группа (тег) | Тесты для обеих версий | Python 3.15 относительно Python 3.14 | Соответствующее изменение времени |
|---|---|---|---|
apps |
7 | 1,108x быстрее | -9,77% |
asyncio |
21 | 1,114x быстрее | -10,27% |
math |
3 | 1,204x быстрее | -16,97% |
regex |
4 | 1,037x быстрее | -3,60% |
serialize |
25 | 3,044x быстрее | -67,15% |
startup |
2 | 1,015x быстрее | -1,43% |
template |
2 | 1,196x быстрее | -16,40% |
Тесты с результатами только для Python 3.14, исключённые из сравнения: dask, genshi_text, genshi_xml, sqlalchemy_declarative, sqlalchemy_imperative. Предоставленные данные не объясняют отсутствие этих результатов для Python 3.15.
Ускорение операций кодирования
Наибольшие изменения образуют отчётливую закономерность. Усреднённый результат base32_large показывает ускорение примерно в 135 раз на AMD и в 142 раза на Intel. Тесты Ascii85 и Base85 для больших объёмов данных ускоряются примерно в 57–69 раз, а соответствующие тесты для малых объёмов — примерно в 31–41 раз. Это специализированные операции с гораздо большим ускорением, чем у большинства остальных тестов.
Эта закономерность согласуется с описанием изменений в Python 3.15: реализации Base32 и Ascii85/Base85 переписаны на C, а Base64 также получил оптимизации. Эти изменения правдоподобно объясняют наблюдаемое ускорение, хотя измерения не позволяют отделить влияние каждого изменения в коде. Тесты измеряют время выполнения и не подтверждают уменьшение потребления памяти.
| Выбор тестов | Ускорение на AMD | Ускорение на Intel |
|---|---|---|
| Все тесты для обеих версий | 1,451x быстрее | 1,451x быстрее |
| Без шести тестов Ascii85 / Base32 / Base85 | 1,203x быстрее | 1,197x быстрее |
| Медиана ускорения отдельных тестов | 1,184x быстрее | 1,166x быстрее |
После исключения этих шести тестов остаётся 116 сопоставимых тестов на AMD и 112 на Intel. Средние геометрические коэффициентов ускорения составляют соответственно 1,203× и 1,197×. В таком нормированном сводном показателе это соответствует сокращению времени примерно на 17%. Это полезный дополнительный ориентир для приложений, которые редко используют Base32 или Base85.
Значение результатов для производительности приложений
Группа тестов с тегом apps показывает ускорение примерно в 1,13 раза на AMD и в 1,11 раза на Intel. Рендеринг шаблонов ускоряется примерно в 1,20 раза на обоих компьютерах. Результаты указывают на заметный выигрыш в некоторых задачах, выполняемых преимущественно на Python. Одновременно они показывают, почему средний показатель 1,45× нельзя напрямую переносить на каждое приложение.
Производительность кодирования изменяется неодинаково: крупные ускорения Base32 и Base85 сочетаются с более медленными операциями Base16. Аналогично группа регулярных выражений показывает лишь небольшое общее ускорение, тогда как regex_effbot выполняется медленнее на обоих компьютерах, а regex_dna — на AMD. Среднее время запуска остаётся близким к эталонному результату. Практический эффект зависит от операций, выполняемых приложением.
Официальная документация Python также описывает интерпретатор, использующий хвостовые вызовы и применяемый в официальных 64-разрядных выпусках для Windows. В метаданных исследованных версий указаны разные идентификаторы компилятора. Сравнение относится к полным сборкам интерпретатора, поэтому отдельные ускорения нельзя приписать исключительно JIT, компилятору или конкретному изменению интерпретатора.
Оба компьютера показывают почти одинаковый результат для полного набора, но различаются оборудованием и числом тестов, доступных для обеих версий. Это не означает большего выигрыша у какого-либо производителя процессоров. Оценка конкретного приложения требует измерений с характерными входными данными и фактически используемыми зависимостями, а также проверки совместимости.
Примечания к измерениям
Для каждого теста в каждой сессии использовалось 20 рабочих процессов. Для большинства тестов сохранено 60 значений времени, а для каждого теста запуска — 200. При расчёте сводного времени средним значениям отдельных сессий присваивается одинаковый вес. Выбросы сохранены в данных, а тесты без результата для одной из версий исключены вместо присвоения им предполагаемого значения.
Символ † используется, если коэффициент сравнения меняется между сессиями более чем на 10%, среднее ускорение сменяется замедлением или наоборот либо коэффициент вариации набора измерений превышает 25%. Коэффициент вариации — это отношение стандартного отклонения к среднему, выраженное в процентах. Это описательная отметка, принятая для данной статьи, а не формальный тест статистической значимости. Она указывает на средние значения, величина которых, а при небольших различиях и направление изменения, менее надёжны.