Gentoo layihəsi Portage 3.0 paket idarəetmə sistemini təqdim etdi

Stabilləşdirilmiş paket idarəetmə sisteminin buraxılışı Portage 3.0, paylanmasında istifadə olunur Gentoo Linux. Təqdim olunan mövzu Python 3-ə keçid və Python 2.7 üçün dəstəyin sona çatması ilə bağlı uzunmüddətli işi ümumiləşdirir.

Python 2.7 üçün dəstəyin sona çatması ilə yanaşı, digər mühüm dəyişiklik də daxil edilməsi idi optimallaşdırmalar, bu, asılılıqların müəyyən edilməsi ilə bağlı hesablamaları 50-60% sürətləndirməyə imkan verdi. Maraqlıdır ki, bəzi tərtibatçılar onun işini sürətləndirmək üçün C/C++ və ya Go-da asılılığın həlli kodunu yenidən yazmağı təklif etdilər, lakin onlar az səylə mövcud problemi həll edə bildilər.

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

Добавить комментарий