A Python 2.7 támogatásának megszűnése mellett egy másik fontos változás a következő volt:
A meglévő kód profilozása azt mutatta, hogy a számítási idő nagy része a use_reduce és a catpkgsplit függvények ismétlődő argumentumkészlettel történő meghívásával telt (például a catpkgsplit függvényt 1-5 millió alkalommal hívták meg). A dolgok felgyorsítása érdekében ezeknek a függvényeknek az eredményeit szótárak segítségével gyorsítótáraztuk. A legjobb megoldás a gyorsítótár tárolására a beépített lru_cache függvény volt, de ez csak a 3.2-től kezdődő Python-kiadásokban volt elérhető. A korábbi verziókkal való kompatibilitás érdekében az lru_cache helyére egy csonkot adtunk, de a Portage 2.7-ban a Python 3.0 támogatásának megszüntetésére vonatkozó döntés nagymértékben leegyszerűsítette a feladatot, és lehetővé tette e réteg nélkül is.
A gyorsítótár használatával az „emerge -uDvpU —with-bdeps=y @world” művelet végrehajtási ideje a ThinkPad X220 laptopon 5 perc 20 másodpercről 3 perc 16 másodpercre csökkent (63%). Más rendszereken végzett tesztek legalább 48%-os teljesítménynövekedést mutattak.
A változtatást előkészítő fejlesztő megpróbálta C++-ban vagy Rustban is implementálni a függőségi feloldó kód prototípusát, de a feladat túl nehéz volt, mert nagy mennyiségű kódot kellett portolni, és kétséges volt, hogy az eredmény megéri-e a fáradságot. .
Forrás: opennet.ru