Be Python 2.7 palaikymo pabaigos, kitas svarbus pakeitimas buvo įtraukimas
Profiliuojant esamą kodą paaiškėjo, kad didžioji skaičiavimo laiko dalis buvo skirta funkcijoms use_reduce ir catpkgsplit iškviesti su pasikartojančiu argumentų rinkiniu (pavyzdžiui, funkcija catpkgsplit buvo iškviesta nuo 1 iki 5 milijonų kartų). Siekiant pagreitinti darbą, buvo naudojamas šių funkcijų rezultatų kaupimas talpykloje naudojant žodynus. Geriausias talpyklos saugojimo variantas buvo įmontuota funkcija lru_cache, tačiau ji buvo prieinama tik Python leidimuose, pradedant nuo 3.2. Siekiant suderinamumo su ankstesnėmis versijomis, lru_cache pakeičiantis buvo pridėtas šaknis, tačiau sprendimas nutraukti Python 2.7 palaikymą „Portage 3.0“ versijoje labai supaprastino užduotį ir leido apsieiti be šio sluoksnio.
Naudojant talpyklą, ThinkPad X220 nešiojamajame kompiuteryje operacijos „emerge -uDvpU —with-bdeps=y @world“ vykdymo laikas sumažėjo nuo 5 minučių 20 sekundžių iki 3 minučių 16 sekundžių (63 %). Kitų sistemų bandymai parodė, kad našumas padidėjo mažiausiai 48%.
Pakeitimą parengęs kūrėjas taip pat bandė įdiegti priklausomybės skyros kodo prototipą C++ arba Rust kalbomis, tačiau užduotis buvo per sunki, nes reikėjo perkelti didelį kodo kiekį ir abejojo, ar rezultatas bus vertas pastangų. .
Šaltinis: opennet.ru