Pyston 2 (JIT-компилятор)

Опубликовано August@Karro - чт, 10/29/2020 - 04:00

В отличие от прошлых выпусков версия Pyston 2 помечена как стабильный, а не тестовый выпуск. Проведена большая работа по оптимизации производительности и Pyston 2 теперь быстрее штатного Python 3.8 примерно на 20% при прохождении тестового набора python-macrobenchmarks.

Наиболее заметный выигрыш в производительности отмечается для нагрузок, свойственных web-приложениям. В отдельных тестах, таких как chaos.py и nbody.py, Pyston 2 опережает Python 3.8 в два раза. Ценой использования JIT является незначительное увеличение потребления памяти.

Технические подробности о начинке Pyston 2 пока не приводятся, упомянуто только использование DynASM JIT, inline-кэширования и общих оптимизаций CPython. Прошлая версия Pyston использовала JIT на основе трансляции отдельных методов (method-at-a-time), близкий к JIT современных JavaScript-движков. В JIT код на языке Python разбирался и транслировался в промежуточное представление LLVM (IR, Intermediate Representation). Далее IR-представление проходило обработку в оптимизаторе LLVM и передавалось для исполнения в JIT-движок LLVM, который преобразовывал IR-представление в машинный код.


 

Последние материалы