حدود دو هفته پیش بود که pypy رو تست کردم و تنبلی باعث شد نتایجش رو اینجا به اشتراک نزارم! ولی چند روز پیش که تاپیک
http://forum.ubuntu.ir/index.php/topic,97967.0.html رو دیدم گفتم زودتر این کار رو انجام بدم تا ...!خب برم سر اصل مطلب
pypy یک پیاده سازی از پایتون با استفاده از تکنیکهای JIT هست که در موردش در لینک بالا توضیحات خوبی داده شده. اگه یادتون باشه در
http://forum.ubuntu.ir/index.php?topic=85867.0 در مورد تفاوت سرعت پایتون و ++c صحبت شده بود.کد زیر
#!/usr/bin/python3
import random
dice = []
def rollDice():
return random.randrange(1, 7)
for i in range(7):
dice.append(0)
for i in range(1, 6000000):
dice[rollDice()] += 1
for i in range(1, 7):
print(dice[i], " ")
که در اون مطلب اومده بود رو با پایتون و بعد pypy اجرا کردم که در پایین مدت زمان اجرای کد در دو محیط رو می بینین:
پایتون :6.58s
pypy : 0.21s
که نشون میده کد در pypy حدود ۳۰ برابر سریعتر اجرا شده. البته اندازه گیریهایی که خود سایتش در زمینه های مختلف انجام داده افزایش سرعت رو به طور متوسط ۶ برابر در نظر گرفته.
در حال حاضر این پروژه اینقدر بالغ شده که فریمورکهای معروف پایتون مثل جنگو اونو ساپورت می کنن پس میشه با خیال نسبتا راحت تری ازش استفاده کرد.
موارد جالب دیگه ای هم در این پروژه دیده میشه که مثلا یکی از اونا اینه که برنامه نویسهای این پروژه زبانی به اسم RPython تولید کردن که در واقع زیرمجموعه ای از پایتون محسوب میشه که میشه با اون زبانهای داینامیکی تولید کرد که سریعتر از پیاده سازی های رسمی کار می کنن که غیر از خود pypy میشه به این موارد اشاره کرد: پیاده سازی PHP با نام HippyVM که به گفته خودشون ۷.۳ برابر از پیاده سازی رسمی و ۲ برابر از HHVM یعنی پیاده سازی فیسبوک سریعتره.یا مثلا topaz که پیاده سازی روبی هست.
مورد دیگه ای که بد نیست بهش اشاره بشه اینه که یک پیاده سازی دیگه از پایتون هم وجود داره به اسم pyston که dropbox داره اونو پیش می بره که هنوز کامل نشده و فعلا سرعتی بین cpython و pypy داره و باید منتظر بمونیم ببینیم آخرش چی از آب درمیاد!
پیش بینی من اینه که اگه dropbox بتونه pyston رو به صورت رسمی عرضه کنه و اگه خالق پایتون که الان در dropbox کار می کنه اونو تایید کنه و به عنوان پیاده سازی رسمی در python.org قرار بده خب معلومه دیگه اون موقع پایتون می ترکونه! البته باید اینو هم در نظر داشته باشیم که Go هم داره خوب جلو میره طوری که حتی dropbox که از طرفداران سرسخت پایتونه بخشی از زیرساختهای خودش رو برای رسیدن به سرعت بالاتر به این زبان منتقل کرده.
به نظر می رسه که بعد از تقابل زبانهای داینامیک در زمینه سینتکس و سادگی استفاده حالا رقابت بر سر افزایش سرعت هست مثلا روبی هم در ورژنهای آینده بیشتر روی افزایش سرعت تاکید داره تا افزایش قابلیتهای زبان.