Обновить

Комментарии 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 зависит от того, на чём именно ваш код тратит время. И вот тут начинаются нюансы.

Полностью согласен, это было сказано)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации