LINUX.ORG.RU

PyPy 1.9

 ,


0

4

Вышла очередная версия PyPy — реализация языка программирования Python, которая написана на Python и может компилировать сама себя. Основным изменением этого выпуска является значительный прирост производительности. В среднем, на тестовом пакете прирост производительности PyPy 1.8 составляет около 4%. PyPy примерно в 5,5 раз быстрее классического CPython.

Этот релиз всё еще реализует интерфейс Python 2.7.2.

Основные улучшения:

  • Исправлено большое количество багов для 32-битной версии Windows.
  • Улучшения в cpyext, эмуляторе для C-модулей Cpython.
  • PyOpenSSL теперь должен работать.
  • Sets теперь имеют такие же стратегии, как и dictionaries. Это значит, что, к примеру, set'ы, содержащие только значения int будут занимать меньше памяти и быстрее работать.
  • Большой прогресс в библиотеке numpypy.
  • Теперь возможно создавать и манипулировать C-подобыми структурами испульзуя специальный PyPy-модуль _ffi.
  • Бэкэнды для архитектур, отличных от x86 (ARMv7 и PPC64) также развиваются, но не включены в основную ветку.
  • JIT-хуки для контроля создаваемого ассемблерного кода были улучшены.
  • Была добавлена select.kqueue (BSD).

>>> Официальный анонс, полный список улучшений

★★★★★

Проверено: tazhate ()
Последнее исправление: Silent (всего исправлений: 5)

Кастую в тред python-лоровцев, вполне вероятно, что я опять что-то не так перевел

derlafff ★★★★★
() автор топика

Оно вообще кроме как с numpy, с чем-нибудь работать может? Я как-то интересовался PyPy, но тогда начитался что многие библиотеки не работают.

jessey
()

я не понимаю, как тормозной питон написанный на тормозном питоне может быть быстрее сишной реализации???

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

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

derlafff ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Проще делать алгоритмические оптимизации, выявлять отдельные узкие места. В наше время в них-то и есть проблемы скорости, а не в каких-то там расходах на умные указатели и отдельных байтах.

quiet_readonly ★★★★
()

cpyext

Какая прелесть :)

eveel ★★
()
Ответ на: комментарий от I-Love-Microsoft

я не понимаю, как тормозной питон написанный на тормозном питоне может быть быстрее сишной реализации???

Потому что не язык делает быстрым компилятор а компилятор делает быстрым язык.

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от I-Love-Microsoft

я не понимаю, как тормозной питон написанный на тормозном питоне может быть быстрее сишной реализации???

Потому что тормозными бывают лоровцы, а программа может одинаково круто тормозить вне зависимости от языка. Здесь же имеется JIT-компиляция, так что сравнение вообще некорректно.

Divius ★★
()
Ответ на: комментарий от derlafff

Сабж суть интерпретатор-компилятор в одном флаконе, и вроде поддерживает он только Restricted Python, т.е. питон со статической типизацией - типы прямо не указываются конечно, и изменять тип переменной можно обычным присвоением, но если в обычном питоне переменная на определённой строчке может оказаться как строкой, так и числом в зависимости от фазы луны, то Restricted Python такой код считает невалидным; ShedSkin, например, его просто выкидывает и компилит оставшееся.

quiet_readonly ★★★★
()

В среднем <запятая> на тестовом пакете <запятую убрать> прирост производительности <пропущено «относительно»?> PyPy 1.8 составляет около 4%.

Oleaster ★★★
()

>>> Официальный анонс, полный список улучшений


лучшая часть новости, перевод местами не очень

Virtuos86 ★★★★★
()

Интересная вещь. До сих задумываюсь, как оно компилит само себя. Да и тем более, Питон скоростью не отличается, тогда в чем смысл?

a1batross ★★★★★
()
Ответ на: комментарий от buddhist

Машинный код уже перегнали?

Нет, они решили пойти другим путём. Как в фильме «Исходный код» — создают новую реальность.

anonymous
()
Ответ на: комментарий от SI

а он может заменить полностью стандартный python ?

Нет, и еще долгое время не сможет. сейчас всё упирается в библиотеки для питона, где некая часть кода на Си, т.е. работу надо проделать просто колоссальную.

anonymous
()
Ответ на: комментарий от a1batross

Там же на сайте все описано.

Сам интерпретатор Pypy написан на RPython (ограниченное подмножество питона), для которого написан очень эффективный компилятор. Этим они и пользуются для того, чтобы сделать JIT.

Deleted
()
Ответ на: комментарий от Deleted

RPython
для которого написан очень эффективный компилятор

очень эффективный? Это что-то вроде эффективных менеждеров? Компилятор умеет теперь пилить ресурсы ПК?

anonymous
()
Ответ на: комментарий от derlafff

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

Самокомпиляцию придумали древние египтяне: man «Уроборос» :)

quickquest ★★★★★
()

Ждем, когда CERN форкнет под названием TyPyPy

imdens
()
Ответ на: комментарий от Deleted

Сам интерпретатор Pypy написан на RPython (ограниченное подмножество питона), для которого написан очень эффективный компилятор. Этим они и пользуются для того, чтобы сделать JIT.

Быстрее, чес сишный?

Stalin ★★★★★
()
Ответ на: комментарий от Stalin

Сам интерпретатор Pypy написан на RPython (ограниченное подмножество питона), для которого написан очень эффективный компилятор. Этим они и пользуются для того, чтобы сделать JIT.

Быстрее, чес сишный?

Быстрее, чем сишный что? JIT? Интерпретатор получается сильно медленнее сишного интерпретатора (CPython), но зато над этим интерпретатором делается JIT, и иногда получается сильно быстрее.

Справедливости ради стоит отметить, что в реальной жизни, конечно, никаких «быстрее си» не получается, естественно.

kost-bebix ★★
()
Ответ на: комментарий от Stalin

Нет. В режиме интерпретации оно сливает CPython-у. Выигрыш за счет JIT.

Deleted
()

Ребят, всегда хотел спросить: почему нельзя было сделать JIT для CPython-а? Ну там, понятное дело Гвидо бы не разрешил, но можно же было форкнуть CPython и повесить на него JIT, а не начинать делать свой собственный мееедлееенннный интерпретатор. Да, я в курсе про psyco, но это скорее набор хаков, чем JIT для CPython.

Если идея сделать JIT для CPython не так глупа, то подскажите пожалуйста литературу о том как сделать сабж ;) Спасибо ;)

anonymous
()

может компилировать сама себя.

лол, самодостаточная личность.

eR ★★★★★
()
Ответ на: комментарий от thesame

а, ну ясно, JIT же ж, вот и весь ответ :)

а как оно по скорости в сравнении C++ и другими? эту реализацию ведь можно сравнить

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от anonymous

«„„Ребят, всегда хотел спросить: почему нельзя было сделать JIT для CPython-а?““»

Кто это будет делать? Делают JIT те кто сочетает в себе знание ассемблера и кучу всякой теории компиляторов, да и характер неординарный. Сколько на планете таких людей которые будут что то делать в открытом проекте когда другие ездят на Maserati работая на крупные компании? Далее, представь что ты руководитель открытого проекта. Ты захочешь зависить от человека который запилит тебе JIT? А это такое дело что его надо поддерживать, ГОДАМИ. И я не вижу никакого удовольствия в написании и поддержке JIT.

LuaJIT делает один человек, из университетской среды кажется, этот проект его имя, и возможные заказы от корпораций, гранты.

И наконец, зачем JIT когда есть C API? A Cython это вообще Инструмент. Ты не знаешь что этот JIT там творит, почему о потребляет память, как он будет реагировать на малейшие корректировки языка в новых версиях.

tp_for_my_bunghole
()
$ pypy

Python 2.7.2 (341e1e3821fff77db3bb5cdb7a4851626298c44e, Jun 08 2012, 19:03:49)
[PyPy 1.9.0 with GCC 4.7.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
And now for something completely different: ``"it's always up to us, in a way
or the other"''

>>>> import pkg_resources
Traceback (most recent call last):
  File "<console>", line 1, in <module>
ImportError: No module named pkg_resources

Мне вот интересно: сабж сможет хоть один хелло-ворд из одной строчки осилить когда-нибудь без пляски вокруг питоньих путей?

shahid ★★★★★
()
Ответ на: комментарий от shahid

Ну демон-костыль (даже два: cookie и event) для uzbl у меня вполне запускался с pypy.

anonymous
()

«„„Исправлено большое количество багов для 32-битной версии Windows.““» ... «„„Теперь возможно создавать и манипулировать C-подобыми структурами испульзуя специальный PyPy-модуль _ffi.““»

Я не понимаю что сподвигло этих людей на подвиги.

tp_for_my_bunghole
()

А pyglet все так же зверски тормозит.

pevzi ★★★★★
()

Прирост скорости все меньше и меньше. Видимо, примерно на этом уровне и застрянет.

baverman ★★★
()

И все-таки я никак не могу понять устройства этого чуда. Сколько читаю статей и комментариев, ничего не проясняется, а все эти «может компилировать сама себя» еще больше запутывают.

Как я понимаю, интерпретатор самого Python здесь написан на RPython, а уже этот RPython-код запускается с использованием JIT. А JIT тогда на чем написан?

pevzi ★★★★★
()
Ответ на: комментарий от baverman

Оптимизацией толком и не занимались, как мне показалось. Кто-то пилит stm, кто-то numpy, а кто-то 3 питон. Думаю, еще прибавят.

yrttyr
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.