Εκτός από το τέλος της υποστήριξης για την Python 2.7, μια άλλη σημαντική αλλαγή ήταν η συμπερίληψη του
Η δημιουργία προφίλ του υπάρχοντος κώδικα έδειξε ότι το μεγαλύτερο μέρος του χρόνου υπολογισμού ξοδεύτηκε για την κλήση των συναρτήσεων use_reduce και catpkgsplit με ένα επαναλαμβανόμενο σύνολο ορισμάτων (για παράδειγμα, η συνάρτηση catpkgsplit κλήθηκε 1 έως 5 εκατομμύρια φορές). Για να επιταχυνθούν τα πράγματα, χρησιμοποιήθηκε η προσωρινή αποθήκευση των αποτελεσμάτων αυτών των συναρτήσεων χρησιμοποιώντας λεξικά. Η καλύτερη επιλογή για αποθήκευση κρυφής μνήμης ήταν η ενσωματωμένη συνάρτηση lru_cache, αλλά ήταν διαθέσιμη μόνο σε εκδόσεις Python που ξεκινούσαν με την έκδοση 3.2. Για συμβατότητα με προηγούμενες εκδόσεις, προστέθηκε ένα στέλεχος για να αντικαταστήσει το lru_cache, αλλά η απόφαση να διακοπεί η υποστήριξη για την Python 2.7 στο Portage 3.0 απλοποίησε σημαντικά την εργασία και κατέστησε δυνατή την εκτέλεση χωρίς αυτό το επίπεδο.
Η χρήση της προσωρινής μνήμης μείωσε τον χρόνο εκτέλεσης της λειτουργίας «emerge -uDvpU —with-bdeps=y @world» στον φορητό υπολογιστή ThinkPad X220 από 5 λεπτά 20 δευτερόλεπτα σε 3 λεπτά 16 δευτερόλεπτα (63%). Δοκιμές σε άλλα συστήματα έδειξαν αύξηση απόδοσης τουλάχιστον 48%.
Ο προγραμματιστής που ετοίμασε την αλλαγή προσπάθησε επίσης να εφαρμόσει ένα πρωτότυπο του κώδικα ανάλυσης εξάρτησης σε C++ ή Rust, αλλά το έργο ήταν πολύ δύσκολο επειδή απαιτούσε μεταφορά μεγάλου όγκου κώδικα και ήταν αμφίβολο ότι το αποτέλεσμα θα άξιζε την προσπάθεια .
Πηγή: opennet.ru