Gentoo projekat je predstavio sistem upravljanja paketima Portage 3.0

Stabilizirano izdanje sistema za upravljanje paketima Portage 3.0, koji se koristi u distribuciji Gentoo Linux. Predstavljena nit je rezimirala dugogodišnji rad na prelasku na Python 3 i prestanak podrške za Python 2.7.

Osim prestanka podrške za Python 2.7, još jedna važna promjena je uključivanje optimizacije, što je omogućilo da se proračuni vezani za određivanje zavisnosti ubrzaju za 50-60%. Zanimljivo je da su neki programeri predložili prepisivanje koda za rješavanje ovisnosti u C/C++ ili Go kako bi ubrzali njegov rad, ali su uz malo truda uspjeli riješiti postojeći problem.

Profilisanje postojećeg koda pokazalo je da je većina vremena izračunavanja potrošena na pozivanje funkcija use_reduce i catpkgsplit sa skupom argumenata koji se ponavlja (na primjer, funkcija catpkgsplit je pozvana 1 do 5 miliona puta). Da bi se stvari ubrzale, korišteno je keširanje rezultata ovih funkcija pomoću rječnika. Najbolja opcija za pohranu keša bila je ugrađena funkcija lru_cache, ali je bila dostupna samo u Python izdanjima počevši od 3.2. Za kompatibilnost sa ranijim verzijama, dodana je stubica koja zamjenjuje lru_cache, ali odluka da se prekine podrška za Python 2.7 u Portage 3.0 uvelike je pojednostavila zadatak i omogućila da se bez ovog sloja.

Korišćenje keš memorije smanjilo je vreme izvršavanja operacije „emerge -uDvpU —with-bdeps=y @world“ na laptopu ThinkPad X220 sa 5 minuta i 20 sekundi na 3 minuta i 16 sekundi (63%). Testovi na drugim sistemima su pokazali povećanje performansi od najmanje 48%.

Programer koji je pripremio promjenu je također pokušao implementirati prototip koda za rješavanje ovisnosti u C++ ili Rust, ali je zadatak bio pretežak jer je zahtijevao prijenos velike količine koda, a bilo je sumnjivo da bi rezultat bio vrijedan truda .

izvor: opennet.ru

Dodajte komentar