Выпуск Pyston 2, реализации языка Python с JIT-компилятором
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
После трёхлетнего затишья в разработке опубликован релиз проекта 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
===========
Похожие новости
- Главная ссылка к новости (https://blog.pyston.org/2020/1...)
- OpenNews: Dropbox прекращает разработку Pyston. Опубликован финальный выпуск 0.6.1
- OpenNews: Выпуск Pyston 0.6, реализации языка Python с JIT-компилятором
- OpenNews: Dropbox опубликовал Pyston, реализацию языка Python, базирующуюся на JIT
- OpenNews: Выпуск языка программирования Python 3.9
- OpenNews: Выпуск Brython 3.9, реализации языка Python для web-браузеров
Похожие новости:
- [Python, Big Data, Машинное обучение] AutoVIML: Автоматизированное машинное обучение (перевод)
- [Python, Алгоритмы, Машинное обучение, Data Engineering] Расширение возможностей алгоритмов Машинного Обучения с помощью библиотеки daal4py
- [Python, JavaScript, Java] Разбор вступительных задач Школы Программистов hh.ru
- [Разработка веб-сайтов, Python, Django] Что происходит, когда вы выполняете manage.py test? (перевод)
- [Python, Программирование, Математика, Научно-популярное, Физика] Изучаем распространение радиосигналов в ионосфере с помощью SDR
- [Python, Информационная безопасность] Сказ о том, как я токен в Линуксе хранил
- [Python] Мелкая питонячая радость #11: реактивное программирование, парсинг страниц и публикация моделей машинного обучения
- [Высокая производительность, Python, Программирование, Машинное обучение] Deep Learning Inference Benchmark — измеряем скорость работы моделей глубокого обучения
- [Python, Браузеры, Занимательные задачки, Софт] Как я получил пожизненный запас чесночной пиццы с помощью Python и Selenium (перевод)
- [Python, Программирование] О полезности contextvars
Теги для поиска: #_pyston, #_python
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 05:13
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
После трёхлетнего затишья в разработке опубликован релиз проекта 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 =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 05:13
Часовой пояс: UTC + 5