Gentoo նախագիծը ներկայացրեց Portage 3.0 փաթեթների կառավարման համակարգը

Կայունացված փաթեթի կառավարման համակարգի թողարկում Portage 3.0, օգտագործվում է բաշխման մեջ Gentoo Linux. Ներկայացված թեման ամփոփեց երկարաժամկետ աշխատանքը Python 3-ին անցնելու և Python 2.7-ի աջակցության ավարտի վերաբերյալ:

Բացի Python 2.7-ի աջակցության ավարտից, մեկ այլ կարևոր փոփոխություն էր ներառումը օպտիմալացումներ, ինչը հնարավորություն է տվել 50-60%-ով արագացնել կախվածության որոշման հետ կապված հաշվարկները։ Հետաքրքիր է, որ որոշ ծրագրավորողներ առաջարկել են վերաշարադրել կախվածության լուծման կոդը C/C++ կամ Go-ում՝ դրա աշխատանքը արագացնելու համար, սակայն նրանց հաջողվել է լուծել առկա խնդիրը փոքր ջանքերով։

Գոյություն ունեցող ծածկագրի պրոֆիլավորումը ցույց տվեց, որ հաշվարկի ժամանակի մեծ մասը ծախսվել է use_reduce և catpkgsplit ֆունկցիաները կանչելու համար՝ արգումենտների կրկնվող հավաքածուով (օրինակ, catpkgsplit ֆունկցիան կանչվել է 1-ից 5 միլիոն անգամ): Գործողությունները արագացնելու համար օգտագործվել է այս գործառույթների արդյունքների քեշավորումը բառարանների միջոցով: Քեշի պահպանման լավագույն տարբերակը ներկառուցված lru_cache ֆունկցիան էր, բայց այն հասանելի էր միայն Python-ի թողարկումներում՝ սկսած 3.2-ից: Ավելի վաղ տարբերակների հետ համատեղելիության համար lru_cache-ին փոխարինելու համար ավելացվեց անավարտ, սակայն Portage 2.7-ում Python 3.0-ի աջակցությունը դադարեցնելու որոշումը մեծապես պարզեցրեց առաջադրանքը և հնարավոր դարձրեց անել առանց այս շերտի:

Քեշի օգտագործումը ThinkPad X220 նոութբուքի վրա «emerge -uDvpU —with-bdeps=y @world» գործողության կատարման ժամանակը նվազեցրեց 5 րոպե 20 վայրկյանից մինչև 3 րոպե 16 վայրկյան (63%): Այլ համակարգերի վրա փորձարկումները ցույց են տվել աշխատանքի արդյունավետության բարձրացում առնվազն 48%-ով:

Փոփոխությունը պատրաստող ծրագրավորողը նաև փորձեց կիրառել կախվածության լուծման կոդի նախատիպը C++-ում կամ Rust-ում, սակայն առաջադրանքը չափազանց դժվար էր, քանի որ պահանջում էր մեծ քանակությամբ կոդ տեղափոխել, և կասկածելի էր, որ արդյունքը արժե ջանքեր գործադրել: .

Source: opennet.ru

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster