HeadlinesBriefing HeadlinesBriefing.com

JIT Python 3.15 против 3.14: бенчмарки

Towards Data Science •
×

Автор повторно запустил три бенчмарка Python из предыдущего теста на Python 3.14 и Python 3.15, включая и выключая JIT-компилятор в каждой версии. В прошлом раунде JIT версии 3.14 ускорил вычисление множества Мандельброта примерно на 25% и вычисления расстояния Левенштейна на 27%, тогда как поиск по графу Дейкстры не улучшился вообще.

Python 3.15 существенно переработал JIT. Версия 3.14 предсказывала вероятные пути выполнения кода, а 3.15 использует новый фронтенд трассировки, который фиксирует путь, по которому программа реально идёт. Оптимизатор также получил базовое распределение регистров, более развитое распространение констант и меньше операций со счётчиком ссылок. Генерация кода для x86-64 и AArch64 улучшена, а созданный машинный код занимает меньше памяти.

Тестирование всех четырёх конфигураций (3.14 и 3.15, каждая с включённым и выключенным JIT) позволяет отделить эффект изменений интерпретатора в 3.15 от эффекта его JIT. Это важно, потому что прямое сравнение 3.14 и 3.15 может вводить в заблуждение. Интерпретатор 3.15 включает и изменения вне JIT, в том числе изменение интерпретатора, используемого официальными 64-битными сборками для Windows.

Команда выпуска Python сообщает об улучшении среднего геометрического на 7–8% по сравнению со стандартным интерпретатором на своём наборе тестов для x86-64 Linux и на 11–12% на AArch64 macOS. LLVM 21 нужен только на этапе сборки, поэтому пользователям официальных бинарных файлов устанавливать его не требуется.

Повторный замер автора показывает, что более сильный JIT сильнее помогает тем же трём нагрузкам, но всё ещё не помогает каждой программе, особенно коду, который большую часть времени тратит на выделение объектов и вызовы операций, реализованных в другом месте.

Источник: Towards Data Science · Сводку подготовил HeadlinesBriefing