
Комментарии 5
Компиляторы питона на самом деле подходят к своей задаче довольно формально – порождённый ими сишный код представляет собой вызовы всё тех же питоновских операторов, просто из фазы исполнения уходит лексический и синтаксический разбор. Это не оптимизирующий компилятор в таком понимании, как у компилируемых языков. Поэтому скорее я бы ожидал в перспективе превосходства JIT, который хотя бы может получить свои специфические бонусы.
А так вообще питон не очень пригоден к эффективной трансляции из-за избыточной спецификации операционной семантики, в первую очередь – внутренних структур интерпретатора.
Поправьте, пожалуйста:
Ускорение на 335% соответствуют "в 4.35 раза".
Это происходит примерно по тем-же причинам, что и ускорение на 5% не равно замедлению в 20 раз (коэффициент 0.05).
335% — это pystone: синтетический CPU-bound бенчмарк, где Python занят целочисленной арифметикой в цикле. Реальный веб-парсер — IO-bound: 90–95% времени он ждёт сети, а не интерпретирует байткод. Nuitka там даст 5–15%, не 335%. Настоящий выигрыш — у вычислительно плотного кода без тяжёлых C-расширений (NumPy, pandas всё равно уже скомпилированы). Было бы честнее добавить в статью бенчмарк на реальном IO-сценарии — тогда читатель точнее поймёт, где инструмент полезен.
pystone — это такой синтетический тест, искусственная трасса без ям и светофоров. Он замеряет «чистую» скорость выполнения питоновских операций: создание объектов, вызовы функций, простые циклы, работа со строками и списками. Именно здесь интерпретатор CPython теряет больше всего времени на разбор байт-кода, проверки типов и прочую бюрократию. Nuitka всю эту бюрократию убирает — отсюда и впечатляющие +335% (или 3.35-кратное ускорение). По сути, машина едет по идеальной трассе без единого препятствия. Но реальный проект — это не трасса, а городской трафик. Там есть другие машины, светофоры, пешеходы. Ускорение от Nuitka зависит от того, на чём именно ваш код тратит время. И вот тут начинаются нюансы.
Полностью согласен, это было сказано)
Nuitka 4.0: как я разогнал свой Python-скрипт на 335% и почему JIT-будущее уже на пороге