Насколько изменилась производительность Python от версии 3.6 до 3.15? Сравнение десяти версий Python по результатам 122 тестов показывает, что во многих задачах время выполнения существенно сократилось. При этом в некоторых тестах наименьшее среднее время демонстрируют более ранние версии. Эти результаты помогут студентам, исследователям и разработчикам понять, как производительность Python зависит от характера выполняемой задачи.

Тестовая система и версии Python

В тестах использовался настольный компьютер с процессором AMD Ryzen 9 7900, оперативной памятью DDR5 и SSD-накопителем M.2 PCIe Gen4 NVMe. Все тестируемые интерпретаторы представляли собой 64-разрядные сборки Python под управлением Windows 11.

Таблица 1. Конфигурация тестовой системы.
Компонент Конфигурация
Процессор AMD Ryzen 9 7900
Оперативная память DDR5 RAM
Накопитель M.2 PCIe Gen4 NVMe drive
Операционная система Windows 11
Разрядность интерпретатора 64-разрядные сборки Python
Количество тестов 122 (67 проведены для всех версий)
Таблица 2. Протестированные сборки интерпретатора и версии набора тестов, от новых к старым. Ссылка для каждой сборки ведёт на официальную страницу выпуска на python.org.
Версия Python Протестированная сборка Версия pyperformance
Python 3.15 3.15.0 1.14.0
Python 3.14 3.14.8 1.14.0
Python 3.13 3.13.16 1.14.0
Python 3.12 3.12.10 1.14.0
Python 3.11 3.11.9 1.14.0
Python 3.10 3.10.11 1.14.0
Python 3.9 3.9.13 1.11.0
Python 3.8 3.8.10 1.11.0
Python 3.7 3.7.9 1.0.6
Python 3.6 3.6.8 1.0.6

Примечание о сопоставимости результатов: в файлах с результатами использовались три версии набора тестов pyperformance: 1.0.6, 1.11.0 и 1.14.0. Применять разные версии набора тестов пришлось из-за проблем совместимости и ошибок, возникавших при запуске новых версий pyperformance на старых интерпретаторах Python. Там, где это было необходимо, тесты проводились с помощью более ранних версий набора. Совпадение названий тестов не означает, что их реализация и зависимости оставались неизменными. Поэтому различия в результатах нельзя объяснять исключительно изменениями самого интерпретатора Python.

Что изменилось в каждой версии Python?

Ниже перечислены некоторые нововведения в выпусках Python от 3.15 до 3.6. Этот обзор даёт исторический контекст, но само наличие указанных возможностей не означает, что они были включены во время тестирования или повлияли на его результаты.

  • Python 3.15: Добавлены явные ленивые импорты, распаковка элементов в генераторах коллекций и новый пакет профилирования, в состав которого входит статистический профилировщик Tachyon.
  • Python 3.14: Добавлены шаблонные строковые литералы (t-строки), отложенное вычисление аннотаций и поддержка нескольких интерпретаторов в стандартной библиотеке.
  • Python 3.13: Представлены обновлённый интерактивный интерпретатор, экспериментальная сборка без глобальной блокировки интерпретатора (free-threaded) и экспериментальный JIT-компилятор.
  • Python 3.12: Добавлены синтаксис параметров типов, более гибкие f-строки и поддержка отдельной глобальной блокировки интерпретатора (GIL) в каждом субинтерпретаторе.
  • Python 3.11: Реализованы адаптивная специализация в CPython, группы исключений и конструкция except*, а также asyncio.TaskGroup для управления связанными асинхронными задачами.
  • Python 3.10: Добавлены структурное сопоставление с образцом с помощью match и case, запись объединений типов в виде X | Y и более понятные сообщения об ошибках.
  • Python 3.9: Добавлены операторы объединения словарей, аннотации типов со встроенными коллекциями, например list[int], а также модуль zoneinfo для часовых поясов базы IANA.
  • Python 3.8: Добавлены выражения присваивания с оператором «морж» (:=), только позиционные параметры и поддержка общей памяти в модуле multiprocessing.
  • Python 3.7: Добавлены классы данных (dataclasses), контекстные переменные для управления состоянием в контексте выполнения и встроенная функция breakpoint().
  • Python 3.6: Добавлены форматируемые строковые литералы (f-строки), аннотации переменных и асинхронные генераторы.

Как рассчитывались результаты тестов производительности

Для анализа использовались отдельные измерения из JSON-файлов pyperf. Результаты калибровки и предварительных прогонов исключены. Для каждого теста и каждой версии Python рассчитывалось среднее арифметическое измеренных значений. Время в исходных файлах уже нормализовано по одной итерации тестового цикла.

В сравнение включены только тесты, для которых имеется результат Python 3.15. Поэтому исключены шесть тестов: genshi_text, genshi_xml, sqlglot_normalize, sqlglot_optimize, sqlglot_parse и sqlglot_transpile. Отсутствующие результаты обозначены прочерком; они не считаются ни нулевыми значениями, ни проваленными тестами.

В таблицах синим цветом и полужирным шрифтом выделены значения со знаком ★ — наименьшие средние значения в строке до округления. Чем меньше время выполнения, тем лучше результат. Единица измерения указана для каждого теста: мс — миллисекунды, мкс — микросекунды. Для удобства чтения значения округлены до четырёх значащих цифр. Выделение отражает наблюдаемые средние значения.

Python 3.6–3.15: результаты отдельных тестов

В таблице 3 представлены отдельные тесты, выполненные на всех десяти версиях Python; столбцы расположены от версии 3.15 до 3.6. Здесь есть как примеры ускорения, так и задачи, в которых Python 3.15 не показал лучшего результата. Ниже приведена полная таблица из 122 тестов, позволяющая проверить приведённые примеры по всему набору данных. Широкие таблицы можно прокручивать по горизонтали.

Таблица 3. Отдельные тесты, выполненные во всех десяти версиях. ★ — наименьшее зафиксированное среднее значение в строке.
Тест Ед. изм. Python 3.15 Python 3.14 Python 3.13 Python 3.12 Python 3.11 Python 3.10 Python 3.9 Python 3.8 Python 3.7 Python 3.6
async_tree_io мс 558,8 ★ 617,5 577,6 864,9 964,0 1321 1342 1353 1340 1419
deltablue мс 1,669 ★ 2,508 2,249 2,401 2,576 4,298 4,004 4,060 4,441 5,260
dulwich_log мс 44,74 ★ 48,84 47,16 50,01 49,22 58,85 59,76 58,69 64,96 65,13
fannkuch мс 208,5 ★ 280,5 251,0 243,7 237,4 259,9 254,6 264,9 300,1 304,3
json_dumps мс 4,862 ★ 6,731 6,180 5,920 7,629 8,065 8,268 8,332 8,793 9,014
json_loads мкс 13,06 14,53 14,62 14,33 12,79 ★ 13,34 13,98 15,08 16,56 17,48
nbody мс 62,13 ★ 89,91 81,61 81,79 72,83 89,64 83,77 77,54 97,39 96,01
richards мс 22,75 ★ 31,37 30,20 27,37 29,19 41,73 38,45 39,53 42,26 50,17
spectral_norm мс 52,58 ★ 77,96 74,42 75,18 73,23 81,42 80,50 80,31 99,75 97,18
regex_dna мс 118,7 107,9 105,8 99,72 ★ 101,0 110,0 107,5 113,7 122,7 121,4
python_startup мс 34,36 35,18 24,99 33,05 36,57 24,15 33,62 24,13 26,80 23,04 ★
python_startup_no_site мс 29,23 29,09 19,93 27,34 26,76 19,83 28,93 19,81 23,32 18,62 ★

Среднее время в тесте async_tree_io сократилось с 1418,8 мс в Python 3.6 до 558,8 мс в Python 3.15 — на 60,6%. Для json_dumps сокращение времени за тот же период составило 46,1%. Эти результаты относятся к конкретным задачам и не означают, что любое приложение на Python будет работать настолько же быстрее.

Не менее показательны и исключения. Минимальное среднее время в тесте json_loads зафиксировано у Python 3.11, а в regex_dna лидирует Python 3.12. В условиях использованных здесь тестовых виртуальных окружений Python 3.6 показал минимальное среднее время запуска, однако это не доказывает, что инициализация его интерпретатора сама по себе быстрее. Для небольших консольных программ, которые быстро завершают работу, время запуска может быть важнее скорости длительных вычислений. Поэтому единая характеристика вроде «самая быстрая версия Python» скрывает существенные различия.

Как интерпретировать результаты теста времени запуска Python

Тесты запуска измеряют время, необходимое для старта Python, выполнения пустой команды и завершения процесса. Во втором тесте, python_startup_no_site, пропускается обычный этап инициализации при запуске, который подготавливает возможность использования установленных пакетов. Время запуска особенно важно для небольших скриптов, которые часто запускаются и быстро завершаются.

В этих измерениях Python 3.6 запускается быстрее остальных версий, однако значение имеет и способ запуска. Тесты проводились в виртуальных окружениях — отдельных конфигурациях Python, созданных специально для проверки. В Windows новые версии могут использовать дополнительный исполняемый файл-посредник для запуска Python из такого окружения. Это может увеличивать измеренное время. В официальной документации Python описано это изменение, появившееся в Python 3.7.2.

Команды запуска Python не менялись между тремя использованными версиями pyperformance (1.0.6, 1.11.0 и 1.14.0). Однако при измерениях применялись разные версии библиотеки pyperf, которая запускает процессы и измеряет время их выполнения: соответственно 2.5.0, 2.6.3 и 2.10.0. Таким образом, выполняемая задача оставалась одинаковой, но условия измерений в целом не были идентичными.

Тесты кодирования в Python 3.10-3.15

Для тестов кодирования, приведённых ниже, отсутствуют результаты Python 3.6–3.9, поэтому в таблице 4 сравниваются только версии 3.10–3.15. Для всех шести версий использовался pyperformance 1.14.0. Таким образом, в этой таблице нет различий, связанных с версиями набора тестов.

Таблица 4. Отдельные тесты кодирования. ★ — наименьшее зафиксированное среднее значение среди версий Python 3.10–3.15.
Тест Ед. изм. Python 3.15 Python 3.14 Python 3.13 Python 3.12 Python 3.11 Python 3.10
ascii85_large мс 11,62 ★ 797,9 709,0 772,3 643,8 759,2
ascii85_small мс 0,3875 ★ 14,88 13,20 13,79 12,18 14,18
base16_large мс 5,767 4,714 ★ 22,52 23,08 23,89 23,71
base32_large мс 2,431 ★ 327,6 300,7 296,4 265,7 292,1
base32_small мс 0,1630 ★ 6,227 5,802 5,594 5,134 5,641
base64_large мс 1,852 ★ 6,746 6,187 6,095 6,116 6,071
base85_large мс 4,293 ★ 272,4 252,9 258,8 230,1 259,2
base85_small мс 0,1505 ★ 4,864 4,484 4,529 4,198 4,712

Некоторые различия в результатах особенно велики. Например, в тесте base32_large среднее время составляет 327,6 мс в Python 3.14 и 2,431 мс в Python 3.15. Прежде чем делать выводы о причинах столь заметного расхождения, необходимо отдельно проверить реализацию теста и среду выполнения. В то же время Python 3.14 показывает наименьшее среднее время в тесте base16_large: новейшая версия лидирует не во всех задачах кодирования.

Анимированные диаграммы

В анимированном видео тесты показываются по одному. Длина полосы рассчитывается по формуле 100 × среднее время версии ÷ наибольшее среднее время в данном тесте. Таким образом, самому медленному результату соответствует 100%. Например, значение 60% означает, что выполнение заняло на 40% меньше времени, чем у самого медленного результата. Это не означает ускорение на 60%.

Посмотрите полную версию видео:

Бирюзовым цветом обозначены более быстрые результаты внутри одного теста, янтарным — промежуточные, красным — более медленные. Рядом с полосами указано фактическое время выполнения. Для каждого теста используется собственная шкала, поэтому длины полос следует сравнивать только в пределах одной диаграммы.

AMD и Intel: меняется ли характер прироста производительности Python?

Опубликованные результаты измерений на процессорах AMD и Intel позволяют предположить, что при общем сравнении версий Python выбор процессора не обязательно существенно меняет характер различий в производительности. В сравнении Python 3.14 и 3.15 за 2026 год приведён похожий среднегеометрический коэффициент ускорения на двух системах: настольном компьютере с AMD Ryzen 9 7900 и мини-ПК с Intel Core i3-1315U. Он характеризует относительное ускорение при переходе с Python 3.14 на 3.15 на каждом компьютере. После округления значения совпадают, но наборы тестов различаются: 122 на AMD и 118 на Intel.

В сравнении Python 3.10–3.14 за 2025 год также наблюдаются похожие тенденции для ряда задач на обеих платформах. Например, при переходе с Python 3.13 на 3.14 время теста async_tree_io на AMD снижается с 576 до 453 мс, а на Intel — с 580 до 448 мс, то есть примерно на 21% и 23% соответственно.

В совокупности эти примеры указывают на сходные тенденции относительной производительности на протестированных системах. При этом абсолютное время выполнения и порядок версий по скорости в отдельных тестах могут различаться. Системы также отличаются конфигурацией памяти и форм-фактором, поэтому такое сравнение не позволяет выделить влияние исключительно марки процессора или доказать статистическую эквивалентность AMD и Intel. Если важна точная производительность конкретного приложения, необходимы испытания на целевом оборудовании.

Полное сравнение: все 122 теста

Раскрывающаяся таблица содержит все 122 выбранных теста и результаты для десяти версий Python. Звёздочка обозначает наименьшее зафиксированное среднее значение среди имеющихся результатов в строке. Во всей таблице действуют те же правила расчёта, обозначения отсутствующих данных и округления.

Показать результаты всех 122 тестов
Таблица 5. Полные результаты 122 тестов. ★ обозначает наименьшее зафиксированное среднее значение, прочерк — отсутствие результата.
Тест Ед. изм. Python 3.15 Python 3.14 Python 3.13 Python 3.12 Python 3.11 Python 3.10 Python 3.9 Python 3.8 Python 3.7 Python 3.6
2to3 мс 207,6 229,3 205,0 ★ 223,0 212,4 243,5 244,1 233,3 239,4 245,8
ascii85_large мс 11,62 ★ 797,9 709,0 772,3 643,8 759,2 — — — —
ascii85_small мс 0,3875 ★ 14,88 13,20 13,79 12,18 14,18 — — — —
async_generators мс 237,9 269,8 245,9 246,6 194,2 ★ 233,8 222,7 225,1 239,1 —
async_tree_cpu_io_mixed мс 393,4 ★ 420,2 408,3 520,8 564,7 688,5 686,8 687,6 684,0 736,0
async_tree_cpu_io_mixed_tg мс 380,8 ★ 404,4 424,8 517,1 518,0 — — — — —
async_tree_eager мс 98,19 124,2 77,12 70,41 ★ — — — — — —
async_tree_eager_cpu_io_mixed мс 322,5 349,0 305,3 304,9 ★ — — — — — —
async_tree_eager_cpu_io_mixed_tg мс 342,9 ★ 365,3 374,0 430,9 — — — — — —
async_tree_eager_io мс 588,9 ★ 652,8 656,7 1007 — — — — — —
async_tree_eager_io_tg мс 558,3 ★ 610,1 658,6 922,1 — — — — — —
async_tree_eager_memoization мс 170,7 190,5 179,3 170,2 ★ — — — — — —
async_tree_eager_memoization_tg мс 224,0 ★ 243,9 239,1 312,0 — — — — — —
async_tree_eager_tg мс 166,3 ★ 184,9 181,0 222,9 — — — — — —
async_tree_io мс 558,8 ★ 617,5 577,6 864,9 964,0 1321 1342 1353 1340 1419
async_tree_io_tg мс 511,6 ★ 581,5 594,1 897,2 938,2 — — — — —
async_tree_memoization мс 278,0 ★ 308,5 298,0 414,1 434,5 576,2 571,4 557,1 566,9 629,2
async_tree_memoization_tg мс 240,1 ★ 267,1 308,4 383,2 403,2 — — — — —
async_tree_none мс 225,8 ★ 248,5 244,0 312,6 380,6 474,1 485,7 461,8 471,4 554,3
async_tree_none_tg мс 194,4 ★ 215,4 220,6 293,5 306,4 — — — — —
asyncio_tcp мс 435,2 ★ 458,4 441,2 459,3 604,9 754,9 618,0 671,8 — —
asyncio_tcp_ssl мс 1219 ★ 1258 1251 1253 1317 2033 1754 1843 — —
asyncio_websockets мс 125,6 ★ 141,6 452,9 456,7 455,5 458,1 — — — —
base16_large мс 5,767 4,714 ★ 22,52 23,08 23,89 23,71 — — — —
base16_small мкс 308,3 252,3 ★ 522,2 515,2 552,0 605,3 — — — —
base32_large мс 2,431 ★ 327,6 300,7 296,4 265,7 292,1 — — — —
base32_small мс 0,1630 ★ 6,227 5,802 5,594 5,134 5,641 — — — —
base64_large мс 1,852 ★ 6,746 6,187 6,095 6,116 6,071 — — — —
base64_small мкс 169,2 ★ 219,5 204,4 197,2 200,7 245,4 — — — —
base85_large мс 4,293 ★ 272,4 252,9 258,8 230,1 259,2 — — — —
base85_small мс 0,1505 ★ 4,864 4,484 4,529 4,198 4,712 — — — —
bench_mp_pool мс 112,0 126,0 118,1 123,2 98,84 98,60 70,91 68,98 ★ 109,8 110,6
bench_thread_pool мс 0,6588 ★ 0,7389 0,6954 0,7138 0,7202 0,7721 0,7480 0,7616 109,5 109,8
bpe_tokeniser мс 2318 ★ 2968 2872 3112 2710 2962 — — — —
chameleon мс 8,428 9,954 9,834 8,770 8,890 10,32 — 6,593 ★ 6,986 7,623
chaos мс 31,30 ★ 44,06 40,48 43,34 44,41 58,37 57,75 59,67 70,34 76,81
comprehensions мкс 8,117 ★ 12,20 10,70 13,28 13,41 14,73 13,95 14,30 — —
connected_components мс 365,8 388,3 359,4 351,3 ★ 406,9 — — — — —
coroutines мс 12,87 ★ 17,05 14,40 15,38 16,31 17,75 21,04 22,33 22,47 20,61
coverage мс 48,64 52,53 48,59 27,71 37,07 34,36 25,66 25,78 24,54 ★ —
create_gc_cycles мс 0,8892 1,030 1,005 1,004 0,9392 0,9490 0,6352 0,6044 ★ — —
crypto_pyaes мс 39,17 ★ 50,48 48,82 48,91 45,69 64,55 61,67 65,92 71,65 75,32
dask мс 687,5 720,2 732,9 472,2 — — 274,7 273,4 ★ — —
deepcopy мкс 129,9 ★ 174,8 223,6 218,3 219,5 256,3 245,7 250,0 298,9 —
deepcopy_memo мкс 14,64 ★ 19,74 25,02 24,80 24,81 29,56 28,56 28,79 35,50 —
deepcopy_reduce мкс 1,541 ★ 1,899 2,122 1,976 1,949 2,246 2,219 2,244 2,729 —
deltablue мс 1,669 ★ 2,508 2,249 2,401 2,576 4,298 4,004 4,060 4,441 5,260
django_template мс 20,47 ★ 24,56 22,44 22,51 21,89 28,25 — — 35,62 45,57
docutils мс 1272 ★ 1425 1418 1453 1416 1654 1598 1569 1709 1795
dulwich_log мс 44,74 ★ 48,84 47,16 50,01 49,22 58,85 59,76 58,69 64,96 65,13
fannkuch мс 208,5 ★ 280,5 251,0 243,7 237,4 259,9 254,6 264,9 300,1 304,3
fastapi_http мс 399,9 ★ 454,7 431,1 480,7 456,6 517,2 — — — —
float мс 44,02 ★ 57,28 55,06 58,57 52,96 66,99 67,17 66,56 81,47 81,81
gc_traversal мс 1,682 1,807 1,802 1,711 1,635 1,516 1,211 ★ 1,373 — —
generators мс 16,29 ★ 23,32 21,48 23,35 39,08 42,54 32,71 34,39 32,56 —
go мс 59,34 ★ 89,44 89,62 88,20 92,64 132,0 141,1 139,6 144,5 171,1
hexiom мс 3,178 ★ 4,914 4,250 4,447 4,162 5,431 5,223 5,411 5,979 6,971
html5lib мс 28,44 ★ 33,73 33,51 32,67 31,41 39,83 41,80 41,45 46,72 53,20
json_dumps мс 4,862 ★ 6,731 6,180 5,920 7,629 8,065 8,268 8,332 8,793 9,014
json_loads мкс 13,06 14,53 14,62 14,33 12,79 ★ 13,34 13,98 15,08 16,56 17,48
k_core мс 1616 ★ 1708 1670 1902 2137 — — — — —
logging_format мкс 5,081 ★ 6,286 6,031 6,376 6,290 6,900 6,231 6,361 7,385 8,474
logging_silent мкс 0,05126 ★ 0,07505 0,07002 0,06615 0,06868 0,1033 0,1055 0,1041 0,1075 0,2096
logging_simple мкс 4,720 ★ 5,845 5,587 5,986 5,923 6,560 5,818 5,968 6,794 7,618
mako мс 6,643 ★ 7,970 6,737 7,294 7,317 8,889 9,808 10,17 12,65 13,78
many_optionals мкс 297,7 ★ 386,7 368,9 367,0 367,5 404,8 — — — —
mdp мс 661,3 ★ 829,3 1646 1667 1565 1659 1777 1642 1840 1780
meteor_contest мс 60,92 ★ 69,78 66,52 64,18 64,78 65,08 62,60 64,01 69,52 72,23
nbody мс 62,13 ★ 89,91 81,61 81,79 72,83 89,64 83,77 77,54 97,39 96,01
nqueens мс 43,38 ★ 65,02 58,66 59,45 58,23 60,58 56,92 60,47 66,51 68,16
pathlib мс 228,7 232,9 232,0 232,0 220,3 222,0 219,6 219,3 217,8 ★ 219,7
pickle мкс 7,807 7,953 8,085 7,334 6,681 ★ 6,784 6,906 6,706 9,743 8,021
pickle_dict мкс 17,69 ★ 20,50 19,16 19,49 18,45 18,76 17,90 17,83 26,59 20,84
pickle_list мкс 2,820 3,041 2,869 2,804 2,600 2,576 2,517 ★ 2,547 3,583 2,875
pickle_pure_python мкс 175,2 ★ 217,3 190,2 194,9 189,0 254,6 250,9 256,6 293,9 331,2
pidigits мс 128,8 129,7 129,7 135,0 136,1 136,9 139,2 136,1 124,4 ★ 128,3
pprint_pformat мс 831,6 ★ 1034 1006 1008 965,7 1172 903,7 908,7 1020 1115
pprint_safe_repr мс 413,3 ★ 502,5 506,7 486,7 469,7 566,1 — — — —
pyflate мс 239,9 ★ 323,0 303,0 304,3 285,6 389,1 394,1 397,2 443,3 481,4
python_startup мс 34,36 35,18 24,99 33,05 36,57 24,15 33,62 24,13 26,80 23,04 ★
python_startup_no_site мс 29,23 29,09 19,93 27,34 26,76 19,83 28,93 19,81 23,32 18,62 ★
raytrace мс 144,0 ★ 192,8 176,1 195,3 192,9 272,7 266,2 273,1 302,7 358,0
regex_compile мс 54,30 ★ 75,55 73,19 79,10 74,54 90,70 86,59 89,70 102,6 109,1
regex_dna мс 118,7 107,9 105,8 99,72 ★ 101,0 110,0 107,5 113,7 122,7 121,4
regex_effbot мс 1,940 1,588 1,565 1,509 ★ 1,581 1,786 1,819 1,893 2,097 1,892
regex_v8 мс 15,13 14,92 15,03 13,69 ★ 14,16 15,35 16,51 15,16 17,59 17,62
richards мс 22,75 ★ 31,37 30,20 27,37 29,19 41,73 38,45 39,53 42,26 50,17
richards_super мс 26,14 ★ 35,52 34,13 30,93 36,03 50,83 48,11 47,65 — —
scimark_fft мс 163,4 ★ 217,5 207,4 218,4 206,3 221,5 217,6 206,3 252,7 234,0
scimark_lu мс 54,56 ★ 77,23 70,77 74,08 65,88 92,71 90,00 88,69 105,2 140,0
scimark_monte_carlo мс 36,72 ★ 48,66 45,22 47,18 43,48 59,02 58,02 58,99 61,12 72,85
scimark_sor мс 62,58 ★ 93,32 83,76 90,14 78,83 103,4 105,7 103,0 115,4 139,3
scimark_sparse_mat_mult мс 2,504 ★ 3,372 3,225 3,379 3,200 3,530 3,149 3,059 3,498 3,177
shortest_path мс 372,7 397,5 370,4 360,0 ★ 407,7 — — — — —
spectral_norm мс 52,58 ★ 77,96 74,42 75,18 73,23 81,42 80,50 80,31 99,75 97,18
sphinx мс 552,5 ★ 617,7 591,2 610,0 624,3 — — — — —
sqlalchemy_declarative мс 54,38 ★ 61,12 64,18 67,42 67,76 77,65 72,58 72,28 82,56 80,96
sqlalchemy_imperative мс 5,959 ★ 6,798 6,865 6,966 6,914 8,431 8,549 8,320 9,762 9,374
sqlglot_v2_normalize мс 58,48 ★ 71,32 69,04 66,67 67,85 79,88 — — — —
sqlglot_v2_optimize мс 27,93 ★ 33,61 32,29 32,42 31,75 37,03 — — — —
sqlglot_v2_parse мс 0,6214 ★ 0,8693 0,7941 0,8246 0,8752 1,144 — — — —
sqlglot_v2_transpile мс 0,7834 ★ 1,050 0,9646 1,010 1,045 1,362 — — — —
sqlite_synth мкс 1,370 1,523 1,507 1,516 1,341 ★ 1,532 1,648 1,829 1,785 1,955
subparsers мс 5,747 ★ 6,756 18,20 45,06 39,63 45,51 — — — —
sympy_expand мс 220,0 ★ 258,3 248,8 240,2 244,4 267,3 263,4 255,0 345,9 329,7
sympy_integrate мс 9,662 ★ 11,35 11,27 11,35 11,49 12,69 12,57 12,26 16,00 15,85
sympy_str мс 124,8 ★ 149,4 144,6 147,7 149,1 161,0 158,4 155,2 198,0 198,5
sympy_sum мс 66,41 ★ 78,46 76,69 79,50 84,24 90,98 87,22 86,32 102,5 106,8
telco мс 4,111 4,940 5,039 4,170 4,006 3,850 3,710 ★ 3,742 4,727 4,548
tomli_loads мс 1023 ★ 1585 1423 1557 1396 1679 1591 1619 — —
tornado_http мс 93,48 ★ 99,88 99,31 101,5 102,7 120,4 116,4 114,9 121,8 125,6
typing_runtime_protocols мкс 88,07 ★ 107,0 100,3 101,5 290,5 311,7 300,5 311,7 — —
unpack_sequence мкс 0,03101 ★ 0,04821 0,05086 0,04959 0,03492 0,04418 0,04135 0,04645 0,04103 0,04253
unpickle мкс 8,827 8,886 9,203 8,857 7,641 ★ 8,418 8,004 9,646 9,542 9,697
unpickle_list мкс 2,865 2,806 3,067 3,118 2,530 ★ 2,911 2,937 2,714 2,616 2,684
unpickle_pure_python мкс 116,6 ★ 157,6 140,4 143,1 144,8 177,0 171,1 178,5 224,8 239,9
urlsafe_base64_small мкс 206,1 ★ 340,4 316,2 305,1 312,3 412,5 — — — —
xdsl_constant_fold мс 20,97 ★ 24,33 24,03 23,15 23,30 29,74 — — — —
xml_etree_generate мс 50,36 ★ 59,89 58,41 58,83 51,97 55,29 53,82 57,17 67,46 68,77
xml_etree_iterparse мс 47,99 ★ 54,90 56,85 56,13 57,18 58,15 54,40 54,66 60,31 62,17
xml_etree_parse мс 77,91 80,08 81,16 75,08 ★ 80,35 81,05 83,62 84,17 92,31 89,00
xml_etree_process мс 34,81 ★ 42,23 40,30 40,51 37,55 44,00 42,61 44,74 54,81 56,71

Вывод: тестируйте производительность на своих задачах

В большинстве тестов, общих для всех десяти версий в этом наборе данных, Python 3.15 показывает наименьшее среднее время выполнения. Тем не менее в некоторых задачах лидируют более ранние версии. Результаты тестов запуска особенно зависят от среды, а использование разных версий набора тестов ограничивает выводы, которые можно сделать об изменениях самого интерпретатора. Для студентов, исследователей и разработчиков главный практический вывод таков: измеряйте производительность на задачах, важных именно для ваших проектов, и публикуйте не только результаты, но и условия их получения.