Ներկայացվել է Pyston-lite, JIT կոմպիլյատորը ֆոնդային Python-ի համար

Pyston նախագծի մշակողները, որն առաջարկում է Python լեզվի բարձր կատարողական իրականացում, օգտագործելով ժամանակակից JIT կոմպիլյացիայի տեխնոլոգիաները, ներկայացրել են Pyston-lite ընդլայնումը CPython-ի համար JIT կոմպիլյատորի ներդրմամբ: Թեև Pyston-ը CPython կոդերի բազայի մասնաճյուղն է և մշակվում է առանձին, Pyston-lite-ը նախատեսված է որպես ունիվերսալ ընդլայնում, որը նախատեսված է ստանդարտ Python թարգմանիչին (CPython) միանալու համար:

Pyston-lite-ը թույլ է տալիս օգտագործել հիմնական Pyston տեխնոլոգիաները՝ առանց թարգմանիչը փոխելու՝ տեղադրելով լրացուցիչ ընդլայնում PIP կամ Conda փաթեթների կառավարչի միջոցով: Pyston-lite-ն արդեն տեղակայված է PyPI և Conda պահեստներում, և այն տեղադրելու համար պարզապես գործարկեք «pip install pyston_lite_autoload» կամ «conda install pyston_lite_autoload -c pyston» հրամանը։ Առաջարկվում է երկու փաթեթ՝ pyston_lite (ուղղակի JIT) և pyston_lite_autoload (կատարում է ավտոմատ JIT փոխարինում, երբ Python գործընթացը սկսվում է): Հնարավոր է նաև ծրագրային կերպով վերահսկել JIT-ի ներառումը հավելվածից՝ առանց autoload մոդուլի տեղադրման՝ օգտագործելով pyston_lite.enable() ֆունկցիան։

Չնայած Pyston-lite-ը չի ներառում Pyston-ում առկա բոլոր օպտիմալացումները, դրա օգտագործումը կարող է բարելավել աշխատանքը մոտավորապես 10-25%-ով` համեմատած սովորական Python 3.8-ի հետ: Ապագայում նախատեսվում է Pyston-ում առկա օպտիմալացումների մեծ մասը փոխանցել Pyston-lite-ին, ինչպես նաև ընդլայնել CPython-ի աջակցվող տարբերակները (առաջին թողարկումն աջակցում է միայն Python 3.8-ին): Ավելի գլոբալ ծրագրերը ներառում են համագործակցություն CPython թիմի հետ՝ JIT-ի համար նոր API-ներ ներդնելու համար՝ թույլ տալով ավելի ամբողջական վերահսկողություն 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-ից):

Source: opennet.ru

Добавить комментарий