Python-д зориулсан Pyston-lite, JIT хөрвүүлэгчийг танилцууллаа

Орчин үеийн JIT эмхэтгэлийн технологийг ашиглан Python хэлний өндөр гүйцэтгэлтэй хэрэгжилтийг санал болгодог Pyston төслийн хөгжүүлэгчид CPython-д зориулсан JIT хөрвүүлэгчийн хэрэгжилт бүхий Pyston-lite өргөтгөлийг танилцуулав. 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 (Python процесс эхлэх үед автомат JIT орлуулалтыг гүйцэтгэдэг). Мөн pyston_lite.enable() функцийг ашиглан автоматаар ачаалах модулийг суулгахгүйгээр програмаас JIT оруулахыг программчлан хянах боломжтой.

Хэдийгээр Pyston-lite нь Pyston-д байгаа бүх оновчлолыг хамардаггүй ч түүний ашиглалт нь ердийн Python 10-тай харьцуулахад гүйцэтгэлийг ойролцоогоор 25-3.8% сайжруулж чадна. Ирээдүйд Pyston-д байгаа ихэнх оновчлолыг Pyston-lite руу шилжүүлэх, мөн CPython-ийн дэмжигдсэн хувилбаруудыг өргөжүүлэхээр төлөвлөж байна (эхний хувилбар нь зөвхөн Python 3.8-ийг дэмждэг). Илүү олон нийтийн төлөвлөгөөнд JIT-д зориулсан шинэ API-г хэрэгжүүлэхийн тулд CPython багтай хамтран ажиллах нь Python-ийн ажлыг бүрэн хянах боломжийг олгодог. Санал болгож буй өөрчлөлтүүдийг 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

сэтгэгдэл нэмэх