Python 2.7 üçün dəstəyin sona çatması ilə yanaşı, digər mühüm dəyişiklik də daxil edilməsi idi
Mövcud kodun profilləşdirilməsi göstərdi ki, hesablama vaxtının çox hissəsi təkrarlanan arqumentlər dəsti ilə use_reduce və catpkgsplit funksiyalarını çağırmağa sərf olunub (məsələn, catpkgsplit funksiyası 1-5 milyon dəfə çağırılıb). İşləri sürətləndirmək üçün lüğətlərdən istifadə edərək bu funksiyaların nəticələrinin keşləşdirilməsindən istifadə edilmişdir. Keş yaddaşı üçün ən yaxşı seçim daxili lru_cache funksiyası idi, lakin o, yalnız 3.2 ilə başlayan Python relizlərində mövcud idi. Əvvəlki versiyalarla uyğunluq üçün lru_cache-ni əvəz etmək üçün stub əlavə edildi, lakin Portage 2.7-da Python 3.0-yə dəstəyin dayandırılması qərarı tapşırığı xeyli sadələşdirdi və bu təbəqə olmadan etməyə imkan verdi.
Keşdən istifadə ThinkPad X220 noutbukunda “emerge -uDvpU —with-bdeps=y @world” əməliyyatının icra müddətini 5 dəqiqə 20 saniyədən 3 dəqiqə 16 saniyəyə (63%) azaldıb. Digər sistemlər üzrə testlər ən azı 48% performans artımı göstərdi.
Dəyişikliyi hazırlayan tərtibatçı, həmçinin C++ və ya Rust-da asılılıq həlli kodunun prototipini tətbiq etməyə çalışdı, lakin tapşırıq çox çətin idi, çünki böyük miqdarda kodun köçürülməsini tələb edirdi və nəticənin səylərə dəyər olacağı şübhə doğururdu. .
Mənbə: opennet.ru