Выпуск Pyston 2, реализации языка Python с JIT-компилятором

Автор Сообщение
news_bot ®

Стаж: 6 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
29-Окт-2020 02:30

После трёхлетнего затишья в разработке опубликован релиз проекта Pyston 2, развивающего высокопроизводительную реализацию языка Python, использующую наработки проекта LLVM. Реализация примечательна применением современных технологий JIT-компиляции и нацелена на достижение высокой производительности, близкой к производительности традиционных системных языков, таких как C++. Код Pyston написан на языке C++. Код прошлых выпусков Pyston распространялся под лицензией Apache, но код Pyston 2 пока недоступен.
В отличие от прошлых выпусков версия Pyston 2 помечена как стабильный, а не тестовый выпуск. Проведена большая работа по оптимизации производительности и Pyston 2 теперь быстрее штатного Python 3.8 примерно на 20% при прохождении тестового набора python-macrobenchmarks. Наиболее заметный выигрыш в производительности отмечается для нагрузок, свойственных web-приложениям. В отдельных тестах, таких как chaos.py и nbody.py, Pyston 2 опережает Python 3.8 в два раза. Ценой использования JIT является незначительное увеличение потребления памяти.
С точки зрения совместимости со штатным Python, проект Pyston преподносится как наиболее совместимая с CPython альтернативная реализация, так как Pyston является ответвлением от основной кодовой базы CPython. В Pyston поддерживаются все возможности CPython, в том числе C API для разработки расширений на языке Си. Изначально Pyston развивался компанией Dropbox, которая в 2017 году приняла решение прекратить разработку своими силами. В начале 2020 года основные разработчики Pyston основали свою компанию, полностью переосмыслили проект и стали заниматься Pyston полный рабочий день.
CPython 3.8.5Pyston 2.0PyPy 7.3.2flaskblogging mean latency5.1ms4.1ms2.5msflaskblogging p99 latency6.3ms5.2ms5.8msflaskblogging memory usage47MB54MB228MBdjangocms warmup timen/an/a105sdjangocms mean latency14.1ms11.8ms15.9msdjangocms p99 latency15.0ms12.8ms179msdjangocms memory usage84MB91MB279MBpylint performance1x1.16x0.50xmypy performance1x1.07xunsupportedpytorch performance1x1.00xunsupportedpypy benchmark suite1x1.36x2.48x
В отличие от проекта PyPy, также продвигающего идею применения JIT для ускорения выполнения Python-скриптов, в Pyston используется не трассирующий JIT, базирующийся на компиляции в машинный код часто выполняемых циклов, а применяемый в современных JavaScript-движках JIT на основе трансляции отдельных методов (method-at-a-time). Принцип работы Pyston сводится к разбору кода на языке Python и его трансляции в промежуточное представление LLVM (IR, Intermediate Representation). Далее IR-представление проходит обработку в оптимизаторе LLVM и передаётся для исполнения в JIT-движок LLVM, который преобразует IR-представление в машинный код.
Для получения информации о типах переменных для программ на динамическом языке Python применяется техника вероятностного предсказания типов объектов с последующим уточнением правильности выбора типа в процессе выполнения. Таким образом Pyston постоянно варьирует выполнение между двумя ветками - быстрой, когда данные о предсказанных типах подтверждаются, и медленной, используемой в случае рассогласования данных о типе. Работа может осуществляться в многопоточном режиме, допускающем параллельное выполнение нескольких нитей кода на языке Python и избавленном от глобальной блокировки интерпретатора (GIL, global interpreter lock).
===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_pyston, #_python
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 26-Апр 10:23
Часовой пояс: UTC + 5