The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

23.11.2016 18:33  Выпуск Pyston 0.6, реализации языка Python с JIT-компилятором

Увидел свет релиз проекта Pyston 0.6, в рамках которого компанией Dropbox, в которой работает Гвидо ван Россум, развивается высокопроизводительная реализация языка Python, созданная с использованием наработок проекта LLVM. Реализация примечательна применением современных технологий JIT-компиляции и нацелена на достижение высокой производительности, близкой к производительности традиционных системных языков, таких как C++. Код Pyston написан на языке C++ и распространяется под лицензией Apache.

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

Для получения информации о типах переменных для программ на динамическом языке Python применяется техника вероятностного предсказания типов объектов с последующим уточнением правильности выбора типа в процессе выполнения. Таким образом Pyston постоянно варьирует выполнение между двумя ветками - быстрой, когда данные о предсказанных типах подтверждаются, и медленной, используемой в случае рассогласования данных о типе. Работа может осуществляться в многопоточном режиме, допускающем параллельное выполнение нескольких нитей кода на языке Python и избавленном от глобальной блокировки интерпретатора (GIL, global interpreter lock).

При подготовке новой версии основное внимание было уделено снижению потребления памяти. Одним из главных шагов для уменьшения потребления памяти стал уход от древовидного представления инструкций интерпретатора в пользу хранения в форме реального байткода. Инструкции теперь следуют одна за другой в памяти без дробления с использованием указателей. Кроме уменьшения размера потребляемой памяти подобный подход также позволяет достичь более агрессивного освобождения неиспользуемой памяти. Например, после компиляции при помощи LLVM JIT часто используемых функций, теперь можно освободить память, в которой размешался код, ранее подготовленный с применением встроенного JIT. Потребление памяти также сокращено за счёт повышения эффективности стадий анализа кода и устранению утечек памяти. В итоге, в некоторых тестах потребление памяти снизилось до двух раз, по сравнению с Pyston 0.5.1;

В новом выпуске также представлена большая порция исправлений, устраняющих проблемы совместимости с CPython. Для упрощения замены CPython на Pyston проведена унификация структуры директорий и порядка следования записей в типе dict. Изменения позволили добиться выполнения в Pyston немодифицированных программ pip и virtualenv.

Что касается производительности, то несмотря на то, что специальных оптимизиаций не добавлялось, при оценке производительности операций при помощи библиотеки NumPy, Pyston уже приблизился к CPython, а в некоторых тестах даже немного обгоняет его.



  1. Главная ссылка к новости (https://blog.pyston.org/2016/1...)
  2. OpenNews: Выпуск PyPy2.7 5.6, реализации Python, написанной на языке Python
  3. OpenNews: Выпуск Cython 0.25, компилятора для языка Python
  4. OpenNews: Выпуск PyPy3 5.5, реализации Python 3, написанной на языке Python
  5. OpenNews: Выпуск Pyston 0.5.1, реализации языка Python с JIT-компилятором
  6. OpenNews: Увидел свет язык программирования Python 3.5.0
Лицензия: CC-BY
Тип: Программы
Ключевые слова: python, pyston
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, анонимус вульгарис, 18:45, 23/11/2016 [ответить] [смотреть все]
  • +10 +/
    Жрёт всего втрое больше памяти, чем cpython, и приближается к нему по производительности? Это успех!
     
     
  • 2.4, Пиони, 19:30, 23/11/2016 [^] [ответить] [смотреть все] [показать ветку]
  • +1 +/
    Тоже не очень понимаю, в чём успех заключается
     
     
  • 3.5, Пиони, 19:32, 23/11/2016 [^] [ответить] [смотреть все]
  • +/
    Хотя нет, они избавились от GIL - значит многопоточный код станет шустрее в разы... весь текст скрыт [показать]
     
     
  • 4.9, Xasd, 23:45, 23/11/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    в общем случае -- не станет а станет только для некоторых ситуаций GIL не меш... весь текст скрыт [показать]
     
     
  • 5.16, Аноним, 11:02, 24/11/2016 [^] [ответить] [смотреть все]  
  • +/
    В реальном мире и реальном софте как раз основное время ты тратишь на питоновски... весь текст скрыт [показать]
     
     
  • 6.18, KonstantinB, 11:34, 24/11/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Если ты пишешь вычислительный софт на python - то да Но это вообще не лучший вы... весь текст скрыт [показать]
     
     
  • 7.25, Аноним, 14:44, 27/11/2016 [^] [ответить] [смотреть все]  
  • +/
    Если ты пишешь вычислительный софт на python, то пишешь с использованием numpy и... весь текст скрыт [показать]
     
  • 2.10, ADR, 01:34, 24/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Numpy работает почти одинаково, а Python-код в Pyston работает в разы быстрее И... весь текст скрыт [показать] [показать ветку]
     
  • 1.3, Crazy Alex, 19:26, 23/11/2016 [ответить] [смотреть все]  
  • +1 +/
    Я чего-то сильно не понимаю, или они бенчили numpy, который 99.9 времени проводит в сишных расширениях?
     
     
  • 2.6, Аноним84701, 19:41, 23/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Я так понял, там речь шла именно о numpy Дело в том, что нормально запустить он... весь текст скрыт [показать] [показать ветку]
     
  • 1.13, Аноним, 08:12, 24/11/2016 [ответить] [смотреть все]  
  • +1 +/
    это победа D ... весь текст скрыт [показать]
     
     
  • 2.17, Аноним, 11:08, 24/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    У них есть и нормальные бенчмарки не в numpy А с numpy да, действительно победа... весь текст скрыт [показать] [показать ветку]
     
  • 1.14, Аниним, 08:19, 24/11/2016 [ответить] [смотреть все]  
  • +/
    Уже видели промер на rubinius
     
  • 1.15, Аноним, 09:53, 24/11/2016 [ответить] [смотреть все]  
  • +2 +/
    А ведь допилят ЗП у Ван Россума, по наитию, тысяч 20 уе в месяц, и DropBox не с... весь текст скрыт [показать]
     
     
  • 2.19, Аноним, 11:49, 24/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Блаженный... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.22, Owlet, 20:12, 24/11/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    Может он просто в курсе, что тормозят программы, а не языки, и умеет их писать? Или, например, не пытался использовать чистый питон для числодробилок?
     
  • 2.20, KonstantinB, 15:28, 24/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Дропбокс изначально весь сделан одним человеком, который написал на том, что лучше знает. А потом он внезапно взлетел.
     
  • 1.21, DVDV, 17:31, 24/11/2016 [ответить] [смотреть все]  
  • +1 +/
    Какой извилистый, сложный путь обратно к си...
     
     
  • 2.23, Аноним, 19:39, 26/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Основной интерпретатор Python, внезапно, написан на C, поэтому и называется CPyt... весь текст скрыт [показать] [показать ветку]
     
  • 2.24, Аноним, 01:58, 27/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    так велосипедисты же!
    важен сам процесс, а не результат.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor