Pyston-lite، یک کامپایلر JIT برای پایتون بومی را معرفی کرد

توسعه دهندگان پروژه Pyston، که پیاده سازی با کارایی بالا از زبان پایتون را با استفاده از فناوری های مدرن کامپایل JIT ارائه می دهد، پسوند Pyston-lite را با اجرای کامپایلر JIT برای CPython ارائه کردند. در حالی که Pyston شاخه ای از پایگاه کد CPython است و به طور جداگانه توسعه یافته است، Pyston-lite به عنوان یک برنامه افزودنی جهانی طراحی شده است که برای اتصال به مفسر استاندارد Python (CPython) طراحی شده است.

Pyston-lite به شما امکان می دهد با نصب یک افزونه اضافی با استفاده از مدیریت بسته PIP یا Conda، از فناوری های پایه Pyston بدون تغییر مفسر استفاده کنید. Pyston-lite در حال حاضر در مخازن PyPI و Conda میزبانی شده است و برای نصب آن، فقط دستور "pip install pyston_lite_autoload" یا "conda install pyston_lite_autoload -c pyston" را اجرا کنید. دو بسته ارائه می شود: pyston_lite (مستقیماً JIT) و pyston_lite_autoload (انجام تعویض خودکار JIT زمانی که فرآیند پایتون شروع می شود). همچنین می‌توان با استفاده از تابع pyston_lite.enable()، گنجاندن JIT را از برنامه بدون نصب ماژول autoload کنترل کرد.

اگرچه Pyston-lite همه بهینه‌سازی‌های موجود در Pyston را پوشش نمی‌دهد، استفاده از آن می‌تواند عملکرد را تقریباً 10-25٪ در مقایسه با Python 3.8 معمولی بهبود بخشد. در آینده، برنامه ریزی شده است که بیشتر بهینه سازی های موجود در Pyston به Pyston-lite منتقل شود و همچنین نسخه های پشتیبانی شده CPython گسترش یابد (نسخه اول فقط از Python 3.8 پشتیبانی می کند). برنامه های جهانی بیشتر شامل همکاری با تیم CPython برای پیاده سازی API های جدید برای JIT است که امکان کنترل کامل تر بر کار پایتون را فراهم می کند. گنجاندن تغییرات پیشنهادی در شاخه Python 3.12 در حال بحث است. در حالت ایده‌آل، امکان انتقال تمام قابلیت‌ها از Pyston به برنامه افزودنی در نظر گرفته می‌شود، که به ما امکان می‌دهد از حفظ فورک CPython خود اجتناب کنیم.

علاوه بر Pyston-lite، این پروژه همچنین به‌روزرسانی بسته کامل Pyston 2.3.4 را منتشر کرد که بهینه‌سازی‌های جدیدی را ارائه می‌دهد. در تست pyperformance، نسخه 2.3.4 حدود 2.3.3 درصد سریعتر از نسخه 6 است. افزایش عملکرد کلی در مقایسه با CPython 66٪ برآورد شده است.

علاوه بر این، می‌توان به بهینه‌سازی‌های توسعه‌یافته در چرخه توسعه CPython 3.11 در پروژه اصلی اشاره کرد که در برخی آزمایش‌ها افزایش عملکرد را تا 25% ممکن می‌سازد. به عنوان مثال، در CPython 3.11، راندمان کش کردن حالت بایت کد ماژول های پایه افزایش یافته است که سرعت راه اندازی اسکریپت ها را 10-15٪ افزایش می دهد. فراخوانی تابع به طور قابل توجهی تسریع شده است و مفسرهای سریع تخصصی عملیات استاندارد اضافه شده است. همچنین کار برای انتقال برخی بهینه سازی های تهیه شده توسط پروژه های Cinder و HotPy در حال انجام است.

علاوه بر این، در پروژه nogil، کار بر روی یک حالت آزمایشی برای ساخت CPython بدون قفل مفسر جهانی (GIL، Global Interpreter Lock) در حال انجام است، که اجازه دسترسی موازی به اشیاء مشترک از رشته‌های مختلف را نمی‌دهد، که از موازی‌سازی عملیات در چندگانه جلوگیری می‌کند. -سیستم های هسته ای به عنوان راه حل دیگری برای مشکل GIL، توانایی اتصال یک GIL جداگانه به هر مفسری که در یک فرآیند اجرا می شود در حال توسعه است (چندین مفسر می توانند در یک فرآیند اجرا شوند، اما کارایی اجرای موازی آنها به GIL بستگی دارد).

منبع: opennet.ru

اضافه کردن نظر