Производительность CPython 3.14: +20% к 3.13, прорыв в многопоточности, но JIT пока не оправдывает ожиданий

Мигель Гринберг (Miguel Grinberg), известный автор книг по Flask и SQLAlchemy, опубликовал масштабное сравнение производительности различных реализаций Python и других языков. В тестах участвовали версии CPython от 3.9 до 3.14, а также PyPy 3.11 (с JIT-компилятором), Node.js 24 и Rust 1.90. Для CPython 3.13 и 3.14 дополнительно оценивались экспериментальные режимы: JIT-компиляция и Free-threading (режим без глобальной блокировки GIL).

Тестирование проводилось на двух платформах — Ubuntu 24.04 (Intel Core i5) и macOS Sequoia (Apple M2) — с использованием двух сценариев:​
  1. Вычисление чисел Фибоначчи (глубокая рекурсия),​
  2. Пузырьковая сортировка массива случайных чисел.​
Каждый сценарий запускался как в однопоточном, так и в четырёхпоточном режиме.

Ключевые результаты:​

  • CPython 3.14 показал прирост производительности около 20% по сравнению с 3.13 в большинстве тестов. При этом в отдельных случаях версии 3.11 и 3.12 оказались быстрее 3.13, что указывает на временный регресс в этой ветке.​
  • По сравнению с CPython 3.9 и 3.10, версия 3.14 работает примерно вдвое быстрее.​
  • В однопоточных тестах PyPy, Node.js и Rust значительно превосходят CPython 3.14:
    • В тесте Фибоначчи — быстрее в 4.93× (PyPy), 4.88× (Node.js) и 69.82× (Rust).​
    • В сортировке — быстрее в 18.14× (PyPy), 6.64× (Node.js) и 36.15× (Rust).​

Экспериментальные режимы CPython:​

  • Free-threading (без GIL) в CPython 3.14 удвоил производительность в многопоточных сценариях, продемонстрировав реальный потенциал параллелизма.​
  • Однако в однопоточном режиме этот же режим заметно замедлил выполнение, что подчеркивает его специализацию на многопоточных нагрузках.​
  • JIT-компиляция, доступная в 3.13 и 3.14, не дала значимого прироста скорости в тестах. Более того, на macOS (Apple M2) с CPython 3.14 JIT даже ухудшил производительность.​
Эти данные показывают, что CPython 3.14 — самый быстрый релиз из всех на данный момент, особенно в многопоточной среде благодаря Free-threading, но JIT-режим пока остаётся экспериментальным и не приносит ожидаемых улучшений.​
 
Назад
Сверху