Foruten slutten på støtten for Python 2.7, var en annen viktig endring inkluderingen av
Profilering av den eksisterende koden viste at mesteparten av beregningstiden ble brukt på å kalle funksjonene use_reduce og catpkgsplit med et gjentatt sett med argumenter (for eksempel ble catpkgsplit-funksjonen kalt 1 til 5 millioner ganger). For å få fart på sakene ble det brukt caching av resultatene av disse funksjonene ved hjelp av ordbøker. Det beste alternativet for hurtigbufferlagring var den innebygde lru_cache-funksjonen, men den var bare tilgjengelig i Python-utgivelser fra og med 3.2. For kompatibilitet med tidligere versjoner ble det lagt til en stubbe for å erstatte lru_cache, men beslutningen om å avbryte støtten for Python 2.7 i Portage 3.0 forenklet oppgaven betydelig og gjorde det mulig å klare seg uten dette laget.
Bruk av hurtigbufferen reduserte utførelsestiden for «emerge -uDvpU —with-bdeps=y @world»-operasjonen på ThinkPad X220 bærbar PC fra 5 minutter 20 sekunder til 3 minutter og 16 sekunder (63 %). Tester på andre systemer viste en ytelsesøkning på minst 48 %.
Utvikleren som forberedte endringen prøvde også å implementere en prototype av avhengighetsoppløsningskoden i C++ eller Rust, men oppgaven var for vanskelig fordi den krevde portering av en stor mengde kode, og det var tvilsomt om resultatet ville være verdt innsatsen .
Kilde: opennet.ru