استفاده از pypy

پرسیده شده
فعالیت 1249 روز پیش
دیده شده 1232 بار
0

داشتم مقاله ای میخوندم با چیزی آشنا شدم به نام pypy

https://realpython.com/pypy-faster-python/
تو این  مقاله میگه سرعت pypy  به مراتب بیشتر از پایتون است .

حال سوالم اینجاست که چرا از pypy استفاده نمی شود؟

فایل پیوست

Ahmad As
Ahmad As

27 آبان 99

2
حذف شده

من تو گوگل سرچ کردم و به این جمع بندی رسیدم:

  • بنظرم مهم ترین دلیل اینه که در حال حاضر CPython برای پیاده سازی های دیگه پایتون و پایتون های custom یه استاندارد هست. و اساسا CPython مرجع اصلی برای پیاده سازی پایتون هستش. (به همین خاطر همیشه PyPy و پیاده سازی های دیگه همیشه چند ورژن از CPython عقب ترن)
  • خیلی از پکیج ها هنوز نیاز به CPython دارند. و PyPy بعضی از پیکج هارو هنوز پشتیبانی شون نمیکنه (مثل Pandas, SciPy). قبل اینکه برید سراغ استفاده از PyPy بهتر یه نگاه به لیست پکیج های که PyPy پشتیبانی میکنه، بندازید. (پس حتی هیچ ادعای نمیشه کرد که PyPy میتونه همه برنامه هایی که CPython اجرا میکنه رو، اجرا کنه. چه برسه به سریعتر اجرا کردن.)
  • در واقع پیاده سازی PyPy بعضی وقتا برای "اسکریپت ها" سریع تر نیست. بیشتر مردم هم همین مواقع از پایتون استفاده میکنن. این مواقع، مواقعی هستن که برنامه مون زمان اجرایی کوتاهی داره و کار ساده و کوچیکی هم انجام میده. تو سایت PyPy صفحه Features هم یه قسمت میگه: ۲ حالت وجود داره که باید بدونید PyPy قادر به افزایش سرعت اجرای کدتون نیست. یک، عملیات هایی که زمان اجرای کوتاهی دارن، اگر زمان اجرای کدتون حداقل چند ثانیه نیست. پس کامپایلر JIT زمان کافی برای داغ شدن نداره (یعنی تاثیری روی سرعت اجرا برنامه تون نداره). دو، اگر تمام زمان صرف اجرای کتابخونه های run-time (مثل توابع C) میشه، و در واقع صرف اجرای کدهای پایتون نمیشه. کامپایلر JIT کمکی بهتون نمیکنه.
  • ساکن بودن و حرکت نکردن، مهاجرت به PyPy اغلب نیاز به retooling (مجهز کردن به ابزارهای جدید یا ابزار سازگار بازنویسی شده)، که برای بعضی از افراد و سازمان ها کار زیاد و اضافی ای عه. (یعنی افراد و سازمان ها ترجیح میدن مهاجرت نکنن به PyPy چون کلی کار و زحمت داره براشون)
  • تو سایت PyPy میگه "On average, PyPy is ۴.۲ times faster than CPython"، ولی این جمله‌ی دقیقی نیست. و تو سایت speed.pypy.org دقیق تر توضیح میده "The geometric average of all benchmarks is ۰.۲۳ or ۴.۳ times faster than cpython". این ۲ جمله با هم تفاوت زیادی دارن و فهمیدن تفاوت هاشون حیاتی هست. نکاتی باید در نظر بگیریم: یک، جمله‌ی دومی که گفتن فقط طبق benchmark هایی که استفاده کردن صدق میکنه. و اصلا چیزی در مورد برنامه ای که شما نوشتید نمیگه (مگه اینکه برنامه تون دقیقا شبیه برنامه اونها تو benchmark هاشون باشه). دو، جمله شون طبق میانگین گروهی از benchmark هاست. و هیچ ادعای نمیشه کرد که استفاده از PyPy به کدها ۴.۲ برابر سرعت میده. حتی برای برنامه های خودشون که تست کردن.
  • حدودا بیش از ۲۰ ساله که اکثر سازنده های پکیچ برای CPython پیکج ساختن. و هدف شون اصلی شون CPython بوده و هست.

  • پیاده سازی PyPy هنوز جوونه و پر از شک و تردید. (PyPy هنوز به وضعیت stable ای نرسیده و فعلا اصلا پیشنهاد نمیشه برای محصول واقعی و محیط Production)

(عذر میخوام یه مقدار بعضی جاها ترجمه خوبی شاید نکرده باشم. اما منابع رو میذارم و میتونید برید منبع اصلی رو بخونید.)

 

تو مقاله ای هم که فرستادی چند تا نکته درست و قابل توجه گفته که میتونی مقاله باز کنی و بخونی:

  • "CPython is the original implementation of Python and is by far the most popular and most maintained."
  • "Keep in mind that how PyPy affects the performance of your code depends on what your code is doing. There are some situations in which PyPy is actually slower, as you’ll see later."
  • https://realpython.com/pypy-faster-python/#limitations-of-pypy

 

منابع و لینک ها:

فایل پیوست

محمدعلی رضا

توسط

محمدعلی رضا

27 آبان 99