داشتم مقاله ای میخوندم با چیزی آشنا شدم به نام pypy
https://realpython.com/pypy-faster-python/ تو این مقاله میگه سرعت pypy به مراتب بیشتر از پایتون است .
حال سوالم اینجاست که چرا از pypy استفاده نمیشود؟
من تو گوگل سرچ کردم و به این جمع بندی رسیدم:
بنظرم مهمترین دلیل اینه که در حال حاضر 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."