Мигель Гринберг (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) — с использованием двух сценариев:
Тестирование проводилось на двух платформах — Ubuntu 24.04 (Intel Core i5) и macOS Sequoia (Apple M2) — с использованием двух сценариев:
- Вычисление чисел Фибоначчи (глубокая рекурсия),
- Пузырьковая сортировка массива случайных чисел.
Каждый сценарий запускался как в однопоточном, так и в четырёхпоточном режиме.
Ключевые результаты:
- 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-режим пока остаётся экспериментальным и не приносит ожидаемых улучшений.