HeadlinesBriefing HeadlinesBriefing.com

Результаты бенчмарка производительности Python 3.15

Hacker News •
×

Октябрь снова наступил, и это значит, что пришло время попробовать новый релиз Python (технически, я использую релиз 3.15.0rc3, официальный релиз 3.15 выйдет через несколько дней). Как и в моей статье о производительности Python 3.14 год назад, сегодня я делюсь новым запуском моего неформального бенчмарка, сравнивая Python 3.15 с предыдущими интерпретаторами от 3.10. Если вам не интересно графики и таблицы, и вы просто хотите прочитать мой анализ, смейтесь перейти к разделу выводов в конце. Бенчмарк, который я назвал "неформальным", что это значит? Объективная и универсальная оценка производительности программного языка невозможна. Все, что можно сделать — это написать некоторые программы и запустить их, чтобы получить меру их производительности. Другие программы могут показывать похожие характеристики производительности, или они могут не показывать, на самом деле никак не знать. Моя цель с этим бенчмарком — просто почувствовать изменения производительности между версиями Python, но я хочу сделать ясным, что я не пытаюсь получить всесторонний профиль производительности интерпретатора Python. Для моего бенчмарка я буду запускать две программы под названием fibo.py и bubble.py, которые можно просмотреть. Это те же программы, которые я использовал в предыдущих изданиях этого бенчмарка. Первый вычисляет числа из последовательности Фибоначчи, а второй сортирует числа алгоритмом пузырька. Я выбрал эти две программы как представительные двух классов алгоритмов. Вычисление Фибоначчи делается с помощью рекурсии, которую я нашел somewhat неэффективным в интерпретаторах Python. С другой стороны, пузырьковая сортировка использует только for-loop, без какой-либо рекурсии. В моем бенчмарке не пытаюсь покрыть другие типы программ. В частности, обратите внимание, что я не включаю код I/O в этот бенчмарк. Потому что некоторые улучшения производительности в последних версиях Python связаны с многопоточностью, я также создал многопоточную вариацию для каждой программы, поэтому всего у меня четыре разных теста. Полная матрица тестов на самом деле довольно сложная, потому что мне нужно запускать четыре варианта программ под всеми версиями Python, а также альтернативы JIT и free-threading для тех, у них есть. Мне нравится запускать тесты под Py Py также, потому что этот интерпретатор показывал впечатляющую производительность в предыдущих запусках этого бенчмарка. And to place Python performance within the wider ecosystem, I've also ported the two programs to Java Script (Node.js) and Rust. Вот полная матрица тестов, с которой я работал: 2 тест-скрипта: fibo.py: вычисляет числа последовательности Фибоначчи, с рекурсией; bubble.py: сортирует список случайно сгенерированных чисел, без рекурсии. 2 режима потоков: Single-threaded; 4 parallel threads. 6 версий Python, плюс последние версии Py Py, Node.js и Rust: CPython 3.10, 3.11, 3.12, 3.13, 3.14, 3.15; Py Py 3.12; Node 26.3; Rust 1.97. 3 Python интерпретатора: Стандарт; Just-In-Time (JIT): только для CPython 3.13+; Free-threading (FT): только для CPython 3.13+. Читатели моих предыдущих бенчмарков могут помнить, что у меня была дополнительная размерность в моей матрице для Linux vs. mac OS. Учитывая, что в двух предыдущих запусках бенчмарка между ними не было значимых различий, я решил отменить тесты mac OS в этот раз, поэтому все тесты были выполнены на моем ноутбуке с Linux, на котором процессор Intel Core i5 и работает Gentoo Linux. Метод, который я использую для измерения производительности каждого участника этого бенчмарка, — это запуск тестовой программы три раза и взятие средней продолжительности трех. В таблицах результатов, которые я делю ниже, я также показываю разницу скорости относительно версии 3.15, и когда это имеет смысл, также показываю разницу скорости относительно предыдущей версии данного интерпретатора. Для сравнения скорости я использую простую отношение, где 1x означает одинаковую скорость, 0.5x означает половинную скорость (или что заняло в два раза больше времени для...

Источник: Hacker News · Сводку подготовил HeadlinesBriefing