
Python 3.15-ի համեմատական թեստը՝ 3.14-ի հետ համեմատած աննշան աճ, JIT-ի հստակ առաջընթաց
Միգել Գրինբերգի համեմատական թեստը Python 3.15.0rc3-ը համեմատում է 3.10-ը ներառող տարբերակների հետ: 3.14-ի հետ համեմատած արդյունավետության աճը փոքր է, փորձական JIT-ն հստակ արագացում է տալիս, իսկ free-threading-ը բազմաթռեդ թեստերում առանձնանում է:
Նոր անձնական համեմատական թեստը, որը կատարեց ծրագրային ապահովման ինժեներ Միգել Գրինբերգը, Python 3.15-ը համեմատում է 3.10-ը ներառող նախորդ տարբերակների հետ և ցույց է տալիս, որ ապագա տարբերակը նախորդից միայն մի փոքր ավելի արագ է: Ամենանկատելի բարելավումը փորձական JIT կոմպիլյատորն է տալիս, իսկ free-threading-ը իր արժեքը բազմաթռեդ բեռնումներում ցույց է տալիս:
Համեմատական թեստի պարամետրերը
Թեստերը կատարվել են Linux լեպտոպում Intel Core i5 պրոցեսորով: Օգտագործվել են երկու ծրագիր՝ fibo.py, որը ռեկուրսիայով հաշվում է Ֆիբոնաչիի թվերը, և bubble.py, որը for ցիկլերով դասավորում է 10 000 պատահական թիվ: Յուրաքանչյուր ծրագիր գործարկվել է մեկթռեդային և քառաթռեդային ռեժիմներում, իսկ տևողությունները հաշվել են երեք գործարկման միջին արժեքով: Աղյուսակը նաև ներառում էր PyPy 3.12-ը, Node.js 26.3-ը և Rust 1.97-ը համակարգի համատեքստի համար, ինչպես նաև CPython 3.13-ի և ավելի նոր տարբերակների JIT և free-threading հավաքումները: Հեղինակը ստուգել է 3.15.0rc3 release candidate տարբերակը, իսկ գրելու պահին պաշտոնական 3.15-ի թողարկումից առաջ դեռ մի քանի օր էր մնացել:
Մեկթռեդային արդյունքները
Python 3.15-ը Ֆիբոնաչիի թեստն ավարտեց 6,94 վայրկյանում, մի փոքր առաջ է եկել 3.14-ից, որին պահանջվեց 7,17 վայրկյան, և զգալիորեն ավելի լավ էր քան 3.10-ը, որին պահանջվեց 15,94 վայրկյան: Bubble sort թեստը նման պատկեր ունեցավ: 3.15-ին 1,97 վայրկյան, 3.14-ին՝ 2,06 վայրկյան: Երկու թեստերում էլ միայն Python 3.11-ը և 3.14-ը տվեցին զգալի աճ իրենց ուղղակի նախորդների համեմատ, իսկ որոշ թողարկումները ցույց տվին նաև փոքր ռեգրեսիա: PyPy 3.12-ը կրկին մնաց ամենաարագ Python իրականացումը, Ֆիբոնաչիի թեստում 3.15-ի համեմատ 5,54 անգամ արագ էր, իսկ ընդհանուր արդյունքներում Rust-ը առաջում էր 77,24 անգամ:
Python 3.15-ի JIT կոմպիլյատորը նույն տարբերակի ստանդարտ ինտերպրետատորին Ֆիբոնաչիի վրա 1,20 անգամ, իսկ bubble sort-ի վրա՝ 1,28 անգամ հաղթեց: Սա հակադիր է նախորդ տարիների արդյունքներին, երբ JIT-ն ստանդարտ հավաքմանը չէր գերազանցում: free-threading հավաքումները մեկթռեդային աշխատանքում մոտավորապես ստանդարտ ինտերպրետատորի մակարդակում աշխատում էին:
Բազմաթռեդային արդյունքները
Քառաթռեդ ռեժիմում ստանդարտ ինտերպրետատորը գրեթե չի փոխվում, քանի որ GIL-ը խոչընդոտում է իրական զուգահեռ կատարմանը: Python 3.15-ի free-threading հավաքումը Ֆիբոնաչիի թեստը ստանդարտ ինտերպրետատորի համեմատ մոտավորապես 4,5 անգամ արագ էր անցնում, ինչը նման է 3.14-ի ցուցանիշին, իսկ bubble sort-ի վրա դեռ արագ էր: JIT հավաքումը բազմաթռեդ ռեժիմում էլ պահպանեց նման գերազանցությունը ստանդարտ ինտերպրետատորի նկատմամբ, ինչը, ըստ հեղինակի, 3.15-ում նոր է:
Եզրակացություններ
Հեղինակը Python 3.15-ը 3.14-ի համեմատ բավականին աննշան արդյունավետության բարելավում է համարում, իսկ որոշ թեստերը փոքր ռեգրեսիա են ցույց տալիս: Միակ հստակ առավելությունն ունի JIT-ն, որը դեռ փորձական է և արտադրության համար խորհուրդ չի տրվում: Հեղինակը նախատեսում է արտադրական նախագծերը դեռ 3.14-ի վրա թողնել, իսկ 3.15-ը օգտագործել ամենօրյա ինտերպրետատոր նոր հնարավորությունների համար, ինչպիսիք են JavaScript-ի նման comprehensions-ի ընդլայնումը և lazy imports-ը:
Աղբյուրներ: blog.miguelgrinberg.com
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։