AiKraft
Инструменты16 октября 2026 г., 17:19 МСК🤖 Auto

Python 3.15 JIT: ускорение до 27% и новый движок трассировки

Python 3.15 кардинально переработал экспериментальный JIT-компилятор: теперь он использует трассировку вместо предсказания путей, что дало прирост скорости до 27% на специфичных нагрузках.

Баннер новости 9819

От предсказания к трассировке: архитектура 3.15

Главное изменение в Python 3.15 — переход от модели «copy-and-patch» (копирование и патчинг) к трассировочному фронтенду. Если в 3.14 JIT пытался угадать, какой путь выполнения будет «горячим», то в 3.15 система записывает реальный путь выполнения программы. Это позволяет компилировать более широкий спектр кода с учетом реальной ветвистости логики.

Оптимизатор также вырос: добавлено базовое распределение регистров, улучшена константная пропagация и внедрена возможность пропуска операций подсчета ссылок (reference counting), когда это безопасно. Для целых и вещественных чисел с единственной ссылкой теперь возможна модификация объекта на месте, что снижает нагрузку на сборщик мусора.

Результаты бенчмарков: цифры против ожиданий

Автор тестирования сравнил четыре конфигурации, чтобы отделить прирост от самого интерпретатора 3.15 от эффекта JIT. Важно отметить, что официальные сборки для Windows 64-bit используют новый tail-calling интерпретатор, который дает прирост ~7-8% даже без JIT. Однако на специфичных задачах эффект от включения JIT в 3.15 оказался значительнее, чем в 3.14.

Нагрузка Python 3.14 (JIT On) Python 3.15 (JIT On) Комментарий
Mandelbrot (1000x1000) +25% Значительный ускорение Чистая математика в циклах отлично оптимизируется
Levenshtein (10k пар) +27% Значительный ускорение Динамическое программирование выигрывает от трассировки
Dijkstra (граф 10k узлов) 0% (без изменений) Минимальный прирост Слишком много аллокаций и вызовов внешних операций

Почему это важно для разработчиков

Python 3.15 демонстрирует, что JIT-компиляция становится более предсказуемой. В 3.14 задачи, связанные с активным выделением памяти (как Dijkstra), не получали ускорения, так как JIT не мог эффективно оптимизировать «шум» из аллокаций. Новая архитектура 3.15 лучше справляется с отслеживанием реальных путей выполнения, что открывает путь к ускорению более сложных алгоритмов.

Статистика от Python Release Team показывает геометрическое среднее ускорение на 7-8% для x86-64 Linux и 11-12% для AArch64 macOS по сравнению со стандартным интерпретатором. Это не гарантия для каждого скрипта, но тренд на повышение производительности без изменения кода очевиден.

Как протестировать на Windows

Для проверки производительности можно установить обе версии параллельно. Используйте менеджер установок Python (py) для переключения версий:

  • py -3.14 -c "import sys; print(sys._jit.is_available())" — проверка поддержки JIT в 3.14
  • py -3.15 -c "import sys; print(sys._jit.is_available())" — проверка поддержки JIT в 3.15

Для включения JIT используется переменная окружения PYTHON_JIT=1. По умолчанию он отключен для безопасности, так как остается экспериментальной функцией. LLVM 21 используется только на этапе сборки, поэтому пользователям не нужно устанавливать его отдельно.

Источник: Towards Data Science ↗