Pyston-lite, trình biên dịch JIT cho Python gốc được giới thiệu

Các nhà phát triển dự án Pyston, nơi cung cấp khả năng triển khai ngôn ngữ Python hiệu suất cao bằng cách sử dụng các công nghệ biên dịch JIT hiện đại, đã trình bày phần mở rộng Pyston-lite với việc triển khai trình biên dịch JIT cho CPython. Trong khi Pyston là một nhánh của cơ sở mã CPython và được phát triển riêng biệt thì Pyston-lite được thiết kế như một phần mở rộng phổ quát được thiết kế để kết nối với trình thông dịch Python tiêu chuẩn (CPython).

Pyston-lite cho phép bạn sử dụng các công nghệ Pyston cơ bản mà không cần thay đổi trình thông dịch, bằng cách cài đặt tiện ích mở rộng bổ sung bằng trình quản lý gói PIP hoặc Conda. Pyston-lite đã được lưu trữ trong kho PyPI và Conda và để cài đặt nó, chỉ cần chạy lệnh “pip install pyston_lite_autoload” hoặc “conda install pyston_lite_autoload -c pyston”. Hai gói được cung cấp: pyston_lite (JIT trực tiếp) và pyston_lite_autoload (thực hiện thay thế JIT tự động khi quá trình Python bắt đầu). Cũng có thể lập trình kiểm soát việc đưa JIT vào ứng dụng mà không cần cài đặt mô-đun tự động tải bằng cách sử dụng hàm pyston_lite.enable().

Mặc dù Pyston-lite không bao gồm tất cả các tính năng tối ưu hóa có sẵn trong Pyston nhưng việc sử dụng nó có thể cải thiện hiệu suất khoảng 10-25% so với Python 3.8 thông thường. Trong tương lai, dự kiến ​​​​sẽ chuyển hầu hết các tối ưu hóa có trong Pyston sang Pyston-lite, cũng như mở rộng các phiên bản CPython được hỗ trợ (bản phát hành đầu tiên chỉ hỗ trợ Python 3.8). Các kế hoạch toàn cầu hơn bao gồm cộng tác với nhóm CPython để triển khai các API mới cho JIT, cho phép kiểm soát hoàn toàn hơn công việc của Python. Việc đưa các thay đổi được đề xuất vào nhánh Python 3.12 đang được thảo luận. Lý tưởng nhất là khả năng chuyển tất cả chức năng từ Pyston sang tiện ích mở rộng đang được xem xét, điều này sẽ cho phép chúng tôi tránh phải duy trì nhánh CPython của riêng mình.

Ngoài Pyston-lite, dự án cũng phát hành bản cập nhật cho gói Pyston 2.3.4 chính thức, cung cấp các tối ưu hóa mới. Trong thử nghiệm hiệu suất hoạt động, phiên bản 2.3.4 nhanh hơn bản phát hành 2.3.3 khoảng 6%. Mức tăng hiệu suất tổng thể so với CPython được ước tính là 66%.

Ngoài ra, chúng tôi có thể lưu ý các tối ưu hóa được phát triển trong chu kỳ phát triển CPython 3.11 trong dự án chính, trong một số thử nghiệm đã giúp tăng hiệu suất lên 25%. Ví dụ: trong CPython 3.11, hiệu quả lưu trữ trạng thái mã byte của các mô-đun cơ bản đã được tăng lên, điều này sẽ tăng tốc độ khởi chạy tập lệnh lên 10-15%. Các cuộc gọi chức năng đã được tăng tốc đáng kể và các trình thông dịch nhanh chuyên dụng về các hoạt động tiêu chuẩn đã được thêm vào. Công việc cũng đang được tiến hành để chuyển một số tối ưu hóa do dự án Cinder và HotPy chuẩn bị.

Ngoài ra, trong dự án nogil, công việc đang được tiến hành ở chế độ thử nghiệm để xây dựng CPython mà không có khóa thông dịch toàn cầu (GIL, Khóa thông dịch toàn cầu), chế độ này không cho phép truy cập song song vào các đối tượng được chia sẻ từ các luồng khác nhau, điều này ngăn cản sự song song hóa các hoạt động trên nhiều -hệ thống cốt lõi. Là một giải pháp khác cho vấn đề GIL, khả năng liên kết một GIL riêng biệt với mỗi trình thông dịch đang chạy trong một quy trình đang được phát triển (một số trình thông dịch có thể chạy trong một quy trình, nhưng hiệu quả thực thi song song của chúng phụ thuộc vào GIL).

Nguồn: opennet.ru

Thêm một lời nhận xét