13 March 2010

Вышел PyPy 1.2 и ускорил Python в разы!

Python
Вышел PyPy 1.2. Основное отличие — наличие JIT компилятора.
Чтобы долго не объяснять что это и зачем — простой тест:

cnt = 10 * 1000 * 1000
for _ in xrange(cnt): 
    i = i + 1


5.8млн операций сложения в секунду на обычном СPython 2.6 (python test.py)
42.5млн операций в секунду на PyPy 1.2 (pypy test.py)
WinXP SP3, Core2Duo.

Да, в 7 раз быстрее он тест сделал! И это не только на синтетическом тесте: «django» в 3 раза быстрее, «n-body» в 7 раз быстрее… Я не знаю что такое тест «richards», но он теперь вообще в почти 12 раз быстрее. Смотрите результаты сами.

Читать и качать (из раздела "«JIT compiler» version"). 64-bit версии пока нет. А unladen-swallow нервно курит... Под катом еще несколько невероятностей (stackless, «песочница для python кода»)..

В архивах их имеется также stackless версия… и главное sandbox версия! Это версия, которая решает давнюю проблему Python'a — отсутствие безопасной среды для исполнения кода, которому мы не доверяем. Внешний код на C и даже не позволит сделать os.listdir('/'), если я правильно понял намек авторов. Качается там же, где и обычная.

Лично я вообще на PyPy смотрел как на странный эксперимент — Python и так не сказать что супер-быстрый, а писать его интерпретатор на самом же Python казалось просто извра странным развлечением авторов… Однако с введением JIT это стало чем-то невероятным по скорости.

Авторы говорят о том, что в этой версии крэшей не наблюдается, но тем не менее просят все равно относиться к этой версии как к бете.

Кроме того авторы предупреждают, что из-за использования JIT пока что трудно контроллировать количество памяти, которую этот Python скушает. Но тут по сути «speed-memory tradeoff» в чистом виде получается.

Для меня, как большого фаната Python, да и для языка в целом — это просто настоящий прорыв. Теперь буду плотно следить за их развитием. Есть конечно в нем и тесты, по которым CPython выигрывает, но их значительно меньше, чем те, по которым проигрывает. Да и выигрыш не просто там 10-20%, а в 3x, 5x, 8x раз! В общем, звучит невероятно, но ребята из PyPy изобрели V8 но для Python'а.

Как пользоваться?

Скачать, распаковать, вместо python ваш-скрипт.py запустить pypy ваш-скрипт.py

Йои Хаджи,
вид с Хабра
Tags:pypypythonскоростьjit
Hubs: Python
+70
13.3k 58
Comments 94
Popular right now
Python Developer
from 80,000 to 200,000 ₽kt.teamRemote job
Python Разработчик (Python Backend Developer)
from 150,000 ₽Правое полушарие ИнтровертаRemote job
Python developer
from 170,000 to 200,000 ₽AIR ProductionМосква
Python разработчик
from 70,000 to 130,000 ₽AGORARemote job
Python Developer
from 2,500 to 4,000 $OffersHubRemote job