The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Выпуск Pyston 0.4, реализации языка Python с JIT-компилятором "
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск Pyston 0.4, реализации языка Python с JIT-компилятором "  +4 +/
Сообщение от opennews on 04-Ноя-15, 11:20 
Представлен (http://blog.pyston.org/2015/11/03/102/) четвёртый выпуск проекта Pyston (http://www.pyston.org), в рамках которого компанией Dropbox, в которой работает Гвидо ван Россум, развивается высокопроизводительная реализация языка Python, созданная с использованием наработок проекта LLVM. Реализация примечательна применением современных технологий JIT-компиляции и нацелена на достижение высокой производительности, близкой к производительности традиционных системных языков, таких как C++. Код  Pyston написан на языке C++ и распространяется (https://github.com/dropbox/pyston) под лицензией Apache.


В отличие от проекта PyPy (https://www.opennet.ru/opennews/art.shtml?num=43218), также продвигающего идею применения 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).

Особенности нового выпуска:


-  Проведена значительная работа по улучшению совместимости с CPython. Реализована поддержка практически всей семантики языка Python. Уровень поддержи Python доведён до возможности применения Pyston для запуска серверного ПО Dropbox, отвечающего за генерацию страниц. Обеспечена совместимость с большим числом стандартных библиотек, в том числе добавлена начальная поддержка NumPy.  Успешно пройдено 153 дополнительной проверки из тестового набора CPython. Из новых возможностей отмечается поддержка Unicode, множественного наследования, weakrefs и финализаторов ("__del__"), выражений  "exec s in {}", мутирующих функций, C API, многострочных выражений в  REPL и т.д.

-  Значительный прогресс (http://speed.pyston.org/) в оптимизации производительности. В текущем виде Pyston на 25% быстрее CPython  и на 25% медленнее PyPy 4.0. Напомним, что в прошлом выпуске выигрыш составлял около 1% и разработка находилась в состоянии неоптимизированного прототипа. Из улучшений отмечается создание собственной системы "размотки" исключений (C++ exception unwinder); реализация промежуточного JIT, размещённого между интерпретатором и LLVM JIT; новая система дискового кэширования результатов работы LLVM JIT; многочисленные улучшения методов трассировки исполнения кода; новая прослойка для трансляции вызовов C API и т.п.

<center><img src="https://www.opennet.ru/opennews/pics_base/0_1446624067.png&q... style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></center>

-  Осуществлён переход с системы сборки на основе Makefile к применению CMake;
-  Расширена документация (https://github.com/dropbox/pyston/wiki), в том числе подготовлены описания внутренней архитектуры.


URL: http://blog.pyston.org/2015/11/03/102/
Новость: http://www.opennet.ru/opennews/art.shtml?num=43257

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


2. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +2 +/
Сообщение от Аноним (??) on 04-Ноя-15, 11:24 
>представлена... реализация... не будет GIL.

По крайне мере хорошо, что эти релизации идут независимо и... не блокируют друг друга)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +17 +/
Сообщение от Аноним (??) on 04-Ноя-15, 12:05 
>высокой производительности, близкой к производительности традиционных системных языков, таких как C++.

По горло уже сыт этим враньём, "близкого" там и в помине нет и быть не может.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +10 +/
Сообщение от A.Stahl (ok) on 04-Ноя-15, 12:15 
Если вы произнесёте достаточно большую ложь и будете её повторять, то люди в итоге в неё поверят.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

15. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +2 +/
Сообщение от Аноним (??) on 04-Ноя-15, 14:30 
Сколько можно повторять эту банальщину?
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

17. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  –1 +/
Сообщение от Красные Глаза (ok) on 04-Ноя-15, 15:11 
Если вы произнесёте достаточно большую ложь и будете её повторять, то люди в итоге в неё поверят.
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

18. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +1 +/
Сообщение от Аноним (??) on 04-Ноя-15, 15:53 
Совершенно справедливая симметричность.
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

20. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Аноним (??) on 04-Ноя-15, 15:56 
> Совершенно справедливая симметричность.

Ой, промахнулся.

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

19. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +3 +/
Сообщение от Аноним (??) on 04-Ноя-15, 15:56 
Если вы произнесёте достаточно большую правду и будете её повторять, то люди в итоге в неё поверят.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

16. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +2 +/
Сообщение от Нимано on 04-Ноя-15, 14:59 
> По горло уже сыт этим враньём, "близкого" там и в помине нет
> и быть не может.

Читайте внимательнее!

> нацелена на достижение высокой производительности, близкой к производительности традиционных системных языков, таких как C++
> нацелена на достижение

Т.е. похвальное стремление к светлому будущему!
Ну а то, что "не шмогла я, не шмогла!", это уже издержки нашей реальности ...

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

27. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 04-Ноя-15, 17:00 
так и это враньё, питон даже обмазанный JITами не будет иметь такой производительности.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

30. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +4 +/
Сообщение от Нимано on 04-Ноя-15, 18:09 
> питон даже обмазанный JITами не будет иметь такой
> производительности.

Да легко! Делов-то:  
с помощью либастрала забабахать нормальное предсказание типов и освобождение памяти (т.е. убрать подсчет ссылок/ГЦ) и запилить 100% unboxing при компиляции.

Ну или тихой сапой протолкнуть некоторые вещи в плюсовой стандарт.

А еще: вполне может быть, что прилетят инопланетяне и подарят схему спец-ЦПУ, который будет работать исключительно на питоне.


Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

51. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от freehck email(ok) on 05-Ноя-15, 12:50 
Нет, ну почему же. Очень даже может. Это ж не виртуальная машина,  как скажем JVM, где такой же производительности быть точно не может. Если они используют JIT именно что для компиляции в нативный код -- то высокая производительность в принципе сможет быть достигнута.

Вот если бы Вы то же самое сказали по поводу JVM, это было бы более справедливо. Впрочем, недавно мне матёрые явисты объяснили, что проблема тут в выдёргивании слов из контекста: Java действительно обеспечивает производительность компилируемых языков *за счёт хорошо спроектированного параллелизма выполнения*. То есть когда явисты говорят о том, что обгоняют компилируемые языки, надо отдавать себе отчёт, что сравниваются многопоточные java-приложения с не очень хорошо распараллеленными C-аналогами. И кстати недавняя новость о переписанной на сях Apache Cassandra явное тому подтверждение.

Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

52. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +1 +/
Сообщение от userd (ok) on 05-Ноя-15, 15:18 
Опыт, конечно, говорит - "никогда не говори никогда",
но по поводу «Очень даже может» есть серьёзные сомнения.

у Python (в реализации CPython) тоже виртуальная машина.
Для любой функции на python с помощью dis.dis можно получить код:
>>> import dis
>>> def ps(a,b): print a+b
>>> dis.dis(ps)

  3           0 LOAD_FAST                0 (a)
              3 LOAD_FAST                1 (b)
              6 BINARY_ADD          
              7 PRINT_ITEM          
              8 PRINT_NEWLINE      
              9 LOAD_CONST               0 (None)
             12 RETURN_VALUE        


Это стековая машина, манипулирующая данными в довольно абстрактной манере.
Всё - числа, строки, списки, экземпляры объектов и т.п. - всё представляется в виде PyObject* ( https://docs.python.org/2/c-api/intro.html, https://docs.python.org/2/c-api/structures.html )
и код виртуальной машины "не знает" что он складывает и печатает - числа, строки или объекты. Конечно, в какой-то момент времени интерпретатор выяснит что оба слагаемые - числа, вычислит и вернёт сумму, но по логике работы интерпретатора это должно произойти как можно позже.

Я не очень внимателен к достижениям авторов jit и компиляторов (это я про Nuitka), но как мне показалось первые достижения связаны с разворачиванием цикла интерпретатора + генерацией кода в эпилоге функции + улучшение реализации циклов.

Предполагаемая высокая производительность требует разумного отказа от PyObject*,
но это довольно сложно.

Ответить | Правка | ^ к родителю #51 | Наверх | Cообщить модератору

54. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  –1 +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 06-Ноя-15, 01:07 
> Если они используют JIT именно что для компиляции в нативный код -- то высокая производительность в принципе сможет быть достигнута.

Это сильно зависит от ЯП. Питон задизайнен внутри так, то такое в принципе невозможно. Да и у любых аналогичных по динамичности ЯП точно такие же проблемы (ruby, js и прочий крап). Убогий пых имеет значительно больший потенциал для оптимизаций чем всё это вместе взятое.

Ответить | Правка | ^ к родителю #51 | Наверх | Cообщить модератору

55. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +2 +/
Сообщение от Аноним (??) on 06-Ноя-15, 15:04 
Ставка на оптимизацию в наш век сверхбыстрых камней и грошовой памяти явный моветон. Никому это сейчас не нужно....
Ответить | Правка | ^ к родителю #54 | Наверх | Cообщить модератору

36. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  –2 +/
Сообщение от Аноним (??) on 04-Ноя-15, 19:20 
погугли polimorphic inline cache
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

45. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +3 +/
Сообщение от Нимано on 04-Ноя-15, 22:49 
> погугли polimorphic inline cache

погуглите "static dispatch" и "dynamic dispatch" (заодно и  и подумайте на досуге, почему первое всегда будет быстрее второго. Особенно там, где "динамизм" используется вовсю (как например в батарейках питона).
Я прокапитаню:
Даже минимальная проверка типа с вызовом метода всегда будет медленнее вызова без проверки (информацию о типе нужно где-то хранить и извлекать. Все это может быть проделанно хоть и очень быстро, но отнюдь не мгновенно).
А если еще учитывать такие штуки как векторизация/SIMD, "inlining классический", "branch prediction" железки и то, что сам CPU-кэш отнюдь не резиновый ...
Так что, особенно при работе с большими массивами примитивных типов, если нет гарантий того, что тип всегда одинаков (а их, как ни странно, обычно таки нет – динамическая типизация-с) все будет может и не совсем (на порядок) уныло, но однозначно и заметно медленне.

Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

41. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  –2 +/
Сообщение от Аноним (??) on 04-Ноя-15, 20:59 
почему у JavaScript близкая к C++ производительность получилась, а у python невозможна?
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

43. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +2 +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 04-Ноя-15, 22:03 
не получилась.
Ответить | Правка | ^ к родителю #41 | Наверх | Cообщить модератору

56. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Аноним (??) on 06-Ноя-15, 15:06 
Ню да, ню да... Конечно.  
Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

9. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от anonymous (??) on 04-Ноя-15, 12:28 
> В текущем виде Pyston на 25% быстрее CPython и на 25% PyPy 4.0

С pypy.org

> The geometric average of all benchmarks is 7.0 times faster than CPython

Кто-то нагло звиздит.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +5 +/
Сообщение от Никто (??) on 04-Ноя-15, 14:21 
Правильный выбор бенчмарков решает.
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +2 +/
Сообщение от Аноним (??) on 04-Ноя-15, 14:02 
Почему pyston_pgo на графике присутствует только в легенде?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

47. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Ytch (ok) on 05-Ноя-15, 02:45 
Он воистину легендарный!
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

58. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от wWolf on 07-Ноя-15, 12:51 
Ну так написано же — less is better :)
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

40. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Аноним (??) on 04-Ноя-15, 20:57 
>В текущем виде Pyston на 25% быстрее CPython

jit компилятор быстрее интерпретатора на четверть. Это круто!

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

42. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  –1 +/
Сообщение от Я (??) on 04-Ноя-15, 21:10 
Почему они пилят реализацию второй ветки, когда все кроме легаси уже несколько лет как перешли на третью?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

46. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Alexey (??) on 04-Ноя-15, 23:26 
Наверное, потому что для их задач разница не принципиальна.
Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

49. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от xPhoenix (ok) on 05-Ноя-15, 11:30 
К сожалению, не все. Есть одна фирма-лидер [сарказм], которая идёт к успеху и начинает новый проекты на Python с использованием Python 2.7 и Django 1.4.
Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

53. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Аноним (??) on 05-Ноя-15, 17:47 
Потому тропбукс на двойке
Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

57. "Выпуск Pyston 0.4, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Аноним (??) on 07-Ноя-15, 05:20 
Можно спросить у самого Гвидо...
Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру