Poleg konca podpore za Python 2.7 je bila druga pomembna sprememba vključitev
Profiliranje obstoječe kode je pokazalo, da je bila večina časa izračuna porabljena za klicanje funkcij use_reduce in catpkgsplit s ponavljajočim se nizom argumentov (funkcija catpkgsplit je bila na primer poklicana 1- do 5-milijonkrat). Za pospešitev je bilo uporabljeno predpomnjenje rezultatov teh funkcij z uporabo slovarjev. Najboljša možnost za shranjevanje predpomnilnika je bila vgrajena funkcija lru_cache, vendar je bila na voljo le v izdajah Pythona, ki so se začele s 3.2. Zaradi združljivosti s starejšimi različicami je bila dodana škrbina, ki je nadomestila lru_cache, vendar je odločitev o prekinitvi podpore za Python 2.7 v Portage 3.0 močno poenostavila nalogo in omogočila, da je bilo brez te plasti.
Uporaba predpomnilnika je zmanjšala čas izvajanja operacije »emerge -uDvpU —with-bdeps=y @world« na prenosnem računalniku ThinkPad X220 s 5 minut 20 sekund na 3 minute 16 sekund (63 %). Testi na drugih sistemih so pokazali povečanje zmogljivosti za vsaj 48 %.
Razvijalec, ki je pripravil spremembo, je prav tako poskušal implementirati prototip kode za reševanje odvisnosti v C++ ali Rust, vendar je bila naloga pretežka, ker je zahtevala prenos velike količine kode, in dvomljivo je bilo, da bo rezultat vreden truda. .
Vir: opennet.ru