Представлен (http://morepypy.blogspot.ru/2013/08/pypy-21-considered-armfu...) релиз PyPy 2.1 (http://pypy.org/), реализации языка Python, написанной на языке Python (используется статически типизированное подмножество RPython (http://codespeak.net/pypy/dist/pypy/doc/coding-guide.html#re...), Restricted Python). Одновременно доступна (http://morepypy.blogspot.ru/2013/07/pypy3-21-beta-1.html) для тестирования бета-версия PyPy3 2.1 с поддержкой Python 3. Версия PyPy 2.1 примечательная обеспечением официальной поддержки процессоров ARM в JIT-компиляторе. Кроме того, в код внесены очередные оптимизации - новый выпуск в среднем на 10% быстрее (http://speed.pypy.org/) прошлой версии PyPy и в 6.12 раз быстрее классического CPython 2.7.3.<center><img src="http://www.opennet.me/opennews/pics_base/0_1375456783.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></center>
Благодаря задействованию JIT-компилятора, на лету транслирующего некоторые элементы в машинный код, PyPy при выполнении некоторых операций в несколько раз обгоняет по производительности классическую реализацию Python на языке Си (CPython). Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти - общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.
Новшества, добавленные в PyPy 2.1:
- Полноценная поддержка генерации кода для архитектуры ARM в JIT-компиляторе. Поддерживаются системы на базе ARMv6 (Raspberry Pi) и ARMv7 (Beagleboard, Chromebook, Cubieboard и т.п.) в режимах ABI hard-float (armhf/gnueabihf) и soft-float (armel/gnueabi);
- Поддержка Stacklet для ARM;
- Реализация библиотек os.statvfs и os.fstatvfs для Unix-систем;
- Увеличение производительности ведения лога;
- Ускорение выполнения операций с множествами в объектах;
- При формировании пакета обеспечена сборка расширения TK с использованием интерфейса CFFI (http://cffi.readthedocs.org);
- Для Numpy улучшена поддержка массивов и dtype, добавлена поддержка субмассивов, проведена работа над ошибками;
- Экспериментальная поддержка совместимости с Python 3 (CPython 3.2.3), реализованная в отдельной ветке PyPy3;
Основные особенности PyPy:- Поддержка бесстекового (Stackless) режима работы, позволяющего использовать модель actor (erlang-подобное программирование с массой микропотоков и отсыланием сигналов друг другу, но при этом (в отличии от erlang) всё происходит в одном физическом потоке ОС);
- Реализация режима изолированного выполнения кода, к которому нет доверия. От sandbox в CPython данный режим отличается полной поддержкой всех возможностей языка без выделения unsafe-функций.
- Автоматическая генерация и полная прозрачность встроенного JIT-компилятора;
- PyPy успешно проходит стандартный тестовый пакет Python и поддерживает (http://pypy.org/compat.html) большинство из стандартных Python-модулей и фреймворков, таких как ctypes, django (с sqlite), twisted (без поддержки ssl), pylons, pyglet. PyPy может быть использован для бесшовной замены CPython 2.7;
- Поддержка работы на архитектурах x86 (IA-32) , x86_64 и ARM. Ведется работа по адаптации для архитектуры PowerPC (PPC64), но она ещё не завершена;
- На базе технологий PyPy созданы бэкенды для генерации в PyPy байткода для LLVM и виртуальных машин .NET/CLI и Java.
- На базе PyPy ведется разработка реализаций на языке Python интерпретаторов Prolog, Smalltalk, JavaScript, Io и Scheme.
URL: http://morepypy.blogspot.ru/2013/08/pypy-21-considered-armfu...
Новость: http://www.opennet.me/opennews/art.shtml?num=37584
Супер!Есть толька один вопрос: его собрать при трех с копьями гектарах оперативы можно или фиг?! Блин, у меня на ноуте можно OpenStack запустить (как набор ВМ), но этот гад собираться отказывается напрочь!
http://goo.gl/jfDRIY , это раз.
Если совсем все туго то: http://goo.gl/00Z18L
> его собрать при трех с копьями гектарах оперативы можно или фиг?!Питон... его разработчики всегда думают как вас лучше сделать :)
▒▒▒▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄▄
▒▒█▒░░░░▄▄▄▄▀░░░░░▒▀▀▄▄▄▒▒█
▒█▒░░░░░▄▀▀▄▄░░░░▒▄▄▄▒▒▒▒▒▒█
█▒▀▄▄▒░░██▄▄▄█░░▒██▄▄█▒▒▒▒▒▒█
█▒▒░▄▀▄▄▄▀░░░░░░▒▒█▒▒▒▒▒▒▒▒█
█▒░░█▄▄░░░░░█▀░░░░▀▄▒▒▄▀▀▀▄█
█▒░░▀█▄█▀▀▄░▀▀▀▀▄▄▄▀▒▒▒█▒▒█
▒█▒░░░▀█▄▄█▀▀▀█▀▀▀█▀█▀██▒▒█
▒▒█▒░░░░▀██▄▄▄█▄▄▄█▄██▒▒▒▒█▄
▒▒▒█▒░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒█
▒▒▒▒▀▀▀▀▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀▀
>> его собрать при трех с копьями гектарах оперативы можно или фиг?!
> Питон... его разработчики всегда думают как вас лучше сделать :)Разработчики python пишут python (cpython), который собирается везде и легко. А это - нишевая реализация.
>[оверквотинг удален]
> ▒▒█▒░░░░▄▄▄▄▀░░░░░▒▀▀▄▄▄▒▒█
> ▒█▒░░░░░▄▀▀▄▄░░░░▒▄▄▄▒▒▒▒▒▒█
> █▒▀▄▄▒░░██▄▄▄█░░▒██▄▄█▒▒▒▒▒▒█
> █▒▒░▄▀▄▄▄▀░░░░░░▒▒█▒▒▒▒▒▒▒▒█
> █▒░░█▄▄░░░░░█▀░░░░▀▄▒▒▄▀▀▀▄█
> █▒░░▀█▄█▀▀▄░▀▀▀▀▄▄▄▀▒▒▒█▒▒█
> ▒█▒░░░▀█▄▄█▀▀▀█▀▀▀█▀█▀██▒▒█
> ▒▒█▒░░░░▀██▄▄▄█▄▄▄█▄██▒▒▒▒█▄
> ▒▒▒█▒░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒█
> ▒▒▒▒▀▀▀▀▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀▀А ты милашка...
Для сборки с 3 гигами оперативы юзал zram, т.к. не хотел делать swap на SSD.
Сожрал в итоге он у меня около 5 гигов
У меня гента, и я сперва хотел не мучатся и поставить бинарную версию, но наткнулся полное нежелание работать с бинарной версией virtualenv. Последний наотрез отказался видеть в pypy полноценный питон без перекомпиляции себя самого любимого с соотвествующим флагом (python_targets_pypy2_0). Но и пересобраться он так же не захотел - бинарная версия pypy нарушала зависимости, что в общем-то для бинарников совсем не редкостьТогда я плюнул на все, удалил бинарную версию, и попытался собрать его из сырцов, а что бы он не залу№?!@я на недостаток оперативы, я стал его собирать с флагом I_KNOW_WHAT_I_AM_DOING="1". Ну и конечно я предварительно выгрузил все что только можно и ~3.7Гб свободных у меня было. Плюс было ~6Гб свопа.
Так этот гад собирался более 12 часов! А самое печальное, что в конце-концов умер на тестах, и проставится так не смог! Честно сказать я в ярости. И мне все равно назовут меня неосилятором или нет - я лично считаю что сборка не должна быть сплошным черным шаманством!
Интересно, как по производительности Питон (и сабжевый ПиПи) в сравнении с Перлом?
Лучше перла, но в разы хуже mono на операциях с памятью.
> Лучше перла, но в разы хуже monoА оно в разы хуже сей и плюсов... ну в общем соревнование слоупоков объявляется открытым.
> А оно в разы хуже сей и плюсов...особенно как наменант на конкурс "какой программист забудет больше всех закрыть файловых дескрипторов (и прочих ресурсов)"..
и конкурс "какой программист наделает больше всего запутанных ошибок из класса Состояние Гонки".
http://benchmarksgame.alioth.debian.org/u32/benchmark.php?te...http://blog.famzah.net/2010/07/01/cpp-vs-python-vs-perl-vs-p.../
Вывод - в нулевом приближении примерно равны.
не ввылайтесь больше на benchmarksgame.alioth.debian.org это выглядит смешно с учетом их тестов, поглядите на код тестов и все поймете
О, мсье знает как правильно сравнивать производительность языков программирования? Просветите нас?Или, может быть, Вам досадно что там не 100500 тестовых задач а только чуть больше 10?
Стандартная реализация CPython чуть побыстрее, чем Perl. PyPy заметно быстрее. Обычно, правда, Perl и Python для вычислительно-емких задач не используются, поэтому само сравнение чисто спортивное.
Меня просто вымораживают числа навроде: "в 6,21 раз быстрее". А почему не в 6,2137778468998 раз быстрее? Там же по графикам видно, что там в лучшем случае 6±4. Если погрешность в единицах, зачем эти дробные значения вообще указывать?
Почитай про среднее арифметическое и медиану
Для расчёта этих значений использовалось среднее геометрическое. Внизу страницы с тестами есть комментарий про это http://speed.pypy.org/
Вэй, братка! Математика учил, физика нэ учил, да.
Сколько гигабайт нужно, чтобы это собрать?
Читаем выше:
http://goo.gl/jfDRIY , это раз.
Если совсем все туго то: http://goo.gl/00Z18L
В debian и openbsd есть из коробки, только, конечно, появляется оно там не в день покупки (и, разумеется, речь идёт про транковые версии).Работает на 1.5 гб. Не знаю, зачем, но работает.
ты дурак? спрашивают про сборку. Для сборки нужно 4g+
> ты дурак? спрашивают про сборку. Для сборки нужно 4g+я знаю, что на сборку требуется 4g+
и поэтому говорю, что в царстве людей бывают и бинарные сборки, которым НЕ требуется 4g+
В своё время я программировал на "мёртвом" языке - ассемблер. Этот язык программирования в мире считают мёртвым, т.к. есть ЯВУ. Эти ЯВУ написаны на асме, получается связка АСМ-ЯВУ-БОЛЕЕВЫСОКИЕЯЗЫКИ. Получается если ПуПу написан на языке Пу (написанный на ЯВУ->асм), о какой скорости может идти речь ?
> В своё время я программировал на "мёртвом" языке - ассемблер. Этот язык
> программирования в мире считают мёртвым, т.к. есть ЯВУ. Эти ЯВУ написаны
> на асме, получается связка АСМ-ЯВУ-БОЛЕЕВЫСОКИЕЯЗЫКИ. Получается если ПуПу написан на
> языке Пу (написанный на ЯВУ->асм), о какой скорости может идти речь
> ?Кто считает мертвым, где? Буквально недавно писал кое-что, вовсе не из спортивного интереса, а работы для.
Речь идёт о скорости выполнения типовых операций в коде, написанном на Python. Сравнивается интерпретатор CPython и JIT-компилятор PyPy. Что конкретно непонятно? Ты ведь в курсе в чём разница между интерпретацией и JIT-компиляцией?
> В своё время я программировал на "мёртвом" языке - ассемблер. Этот язык
> программирования в мире считают мёртвым, т.к. есть ЯВУ. Эти ЯВУ написаны
> на асме, получается связка АСМ-ЯВУ-БОЛЕЕВЫСОКИЕЯЗЫКИ. Получается если ПуПу написан на
> языке Пу (написанный на ЯВУ->асм), о какой скорости может идти речь
> ?PyPy написан на не на Python, а на RPython и потом компилируется.
> В своё время я программировал на "мёртвом" языке - ассемблер. Этот язык
> программирования в мире считают мёртвым,Интересно, кто? А то гугля вон в libvpx на нем наворачивает так, что за ушами трещит. Иначе кодек слоупоком получается. А если его на питоне переписать - для кодирования потребуется небольшой Cray.
> на асме, получается связка АСМ-ЯВУ-БОЛЕЕВЫСОКИЕЯЗЫКИ. Получается если ПуПу написан на
> языке Пу (написанный на ЯВУ->асм), о какой скорости может идти речь
> ?Просто сравнивается не скорость единичной операции языков, а скорость _оптимизированной_ программы. Человек за тоже время оптимизирует программу на ассемблере, чем компилятор с ЯВУ.
Простой пример:
1. Если у вас есть действие в цикле, и затраты на организацию упраления с циклом соизмеримы с действием, то развернув цикл в простое повторение действий вы выигрываете в скорости, но проигрываете в памяти.2. При наличии кэша программу можно оптимизировать для более качественного его использования. Человеку эта ручная оптимизация на ассемблере может сильно добавить седых волос, а компилятору с ЯВУ это просто еще один алгоритм оптимизации.
> В своё время я программировал на "мёртвом" языке - ассемблер. Этот язык
> программирования в мире считают мёртвым, т.к. есть ЯВУ. Эти ЯВУ написаны
> на асме, получается связка АСМ-ЯВУ-БОЛЕЕВЫСОКИЕЯЗЫКИ. Получается если ПуПу написан на
> языке Пу (написанный на ЯВУ->асм), о какой скорости может идти речь
> ?"Я всю жизнь был извозчиком, на лошадях. Так как всё-таки могут летать самолёты, если у лошадей нет крыльев?"
Не путайте Божий дар с яичницой. Все ЯВУ языки спускаются с ВЫСОКОГО УРОВНЯ до ассемблера. И до тех пор пока ничего нового не изобрели, процессор будет понимать машинный код (асм - понятный для человека) и будут ХАКЕРЫ которые будут пользоваться SoftICE, IDA и другими инструментами. И этот ПуПу тоже спускается до машинного кода, и Ваш IE тоже опускается до машинного кода.
Вы понимаете, что у вас уже начинают прогрессировать старческий маразм и шизофрения?
> Вы понимаете, что у вас уже начинают прогрессировать старческий маразм и шизофрения?Нет, чувак. Это ты у п о р о т ы й.
Topaz - A high performance ruby, written in RPythonА то что все о питоне да о питоне :)
Мне может кто-нибудь доступно объяснить зачем такой изврат? Есть же cpython. Не понятно также причин существоания таких странных явлений как jython и тому подобных.
> Мне может кто-нибудь доступно объяснить зачем такой изврат? Есть же cpython.Почему изврат? Язык Python имеет массу интересных особенностей, но цена этих особенностей - сравнительно низкая производительность. Соответственно, есть интерес к повторению достижений Python, но по возможности - без указанного недостатка. Народ почему-то плющит от того, что в качестве языка программирования PyPy выбран язык довольно похожий на Python. Вы правда думаете, что если бы выбрали C или C++ то удалось-бы достичь лучших результатов или тех-же результатов меньшей ценой?
> Не понятно также причин существоания таких странных явлений как jython и тому
> подобных.Ну и что? Нашёлся человек, который захотел соединить язык Python и инфраструктуру java (существующие библиотеки и интерпретатор с jit-ом) - см. http://hugunin.net/story_of_jython.html
Вот что-то слабо верится что реализация на питоне, а тем более на java будет быстрее сишной реализации.
Это - не вопрос веры. Это вопрос понимания того, что происходит в компьютере при исполнении той или иной программы.Прочтите обсуждаемую новость да рассмотрите картинку.
На некоторых представленных тестах PyPy лишь немного выигрывает, на некоторых - выигрывает в 50 раз. За это приходится платить большим расходом памяти.По поводу Jython - есть варианты.
Скажем, у меня есть любимый микро-бенчмарк из четырёх строк:
from time import clock
t=clock()
s=sum(xrange(10**9))
print clock()-tна нём Jython демонстрирует 70 секунд, python2 - 109 секунд и python3 (с двумя тривиальными правками) - 82 секунды.
Я считаю, что нужно собрать PyPyPy (питон, собранный на питоне, который собрали питоном), чтобы получить еще дополнительный выигрыш в производительности.
Евгений Ваганович, залогинтесь.
Было.
http://www.opennet.me/openforum/vsluhforumID3/44972.html#2
http://www.opennet.me/openforum/vsluhforumID3/64752.html#8