Разработчик провёл масштабное исследование всех способов ускорить…
Разработчик провёл масштабное исследование всех способов ускорить Python. Взял классические математические тесты (n-body, spectral-norm) и пайплайн обработки JSON, а затем прогнал их вообще через всё: от разных версий CPython и PyPy до Numba, Cython, Mojo и связки Rust/PyO3.
Самые интересные результаты бенчмарков:
— GraalPy стал главным сюрпризом. На задаче spectral-norm он разогнал выполнение в 66 раз без единого изменения в исходном коде, обогнав даже скомпилированный Cython;
— в самом Cython нашлась неприятная подстава с типами. Оказалось, что возведение в дробную степень через стандартный оператор
— компилятор Cython никак не предупреждает о таких просадках при сборке. Код успешно компилируется, но теряет огромную долю потенциального ускорения.
В итоге для реального продакшена самым стабильным вариантом остаётся классический подход. Проще всего держать основную бизнес-логику на обычном интерпретаторе, а точечные узкие места переписывать на Rust или выносить в C-расширения. Код всех проверок и итоговые графики выложены в открытый доступ на гитхабе.
@zen_of_python (теперь в VK и Max)
Самые интересные результаты бенчмарков:
— GraalPy стал главным сюрпризом. На задаче spectral-norm он разогнал выполнение в 66 раз без единого изменения в исходном коде, обогнав даже скомпилированный Cython;
— в самом Cython нашлась неприятная подстава с типами. Оказалось, что возведение в дробную степень через стандартный оператор
** работает в 40 раз медленнее, чем прямой вызов сишной функции libc.math.sqrt() с типизированными даблами;
— компилятор Cython никак не предупреждает о таких просадках при сборке. Код успешно компилируется, но теряет огромную долю потенциального ускорения.
В итоге для реального продакшена самым стабильным вариантом остаётся классический подход. Проще всего держать основную бизнес-логику на обычном интерпретаторе, а точечные узкие места переписывать на Rust или выносить в C-расширения. Код всех проверок и итоговые графики выложены в открытый доступ на гитхабе.
@zen_of_python (теперь в VK и Max)
Просмотры: 365