pakettihaldussĂŒsteemi vĂ€ljaanne , mida rakendatakse jaotisest . Esitatud haru on lĂ”petanud pikaajalise töö ĂŒleminekuks Python 3-le ja lĂ”petanud Python 2.7 toe.
Lisaks Python 2.7 toe lĂ”petamisele on teiseks oluliseks muudatuseks pandud , mis vĂ”imaldasid arvutuste kiirusel, mis on seotud sĂ”ltuvuste mÀÀratlemisega, suureneda 50-60%. Huvitav on see, et mĂ”ned arendajad pakkusid sĂ”ltuvuste lahendamise koodi ĂŒmberkirjutamist C/C++ vĂ”i Go keeles, et kiirus kasvada, kuid probleem lahendati suhteliselt lihtsalt.
Koodiprofiilimine nĂ€itas, et peamine aeg arvutustes kulub funktsioonide use_reduce ja catpkgsplit kutsumisele korduvate argumentide kogumiga (nĂ€iteks catpkgsplit kutsuti ĂŒles 1 kuni 5 miljonit korda). Kiirus kasvas nende funktsioonide töö tulemuste vahemĂ€lu rakendamisega sĂ”nastike abil. VahemĂ€lu hoidmiseks oli optimaalne sisseehitatud funktsioon lru_cache, kuid see oli saadaval ainult Python'i vĂ€ljaannetes alates 3.2. Varasema versiooni toe tagamiseks lisati lru_cache'i asendus, kuid Portage 3.0-s python 2.7 toe lĂ”petamine lihtsustas ĂŒlesannet ja lubas sellest vahekihist mööda minna.
VahemĂ€lu kasutamine vĂ€hendas kĂ€su âemerge -uDvpU âwith-bdeps=y @worldâ tĂ€itmise aega ThinkPad X220 sĂŒlearvutil 5 minutist 20 sekundist 3 minutisse 16 sekundisse (63%). Muudel sĂŒsteemidel tehtud testid nĂ€itasid vĂ€hemalt 48% jĂ”udluse kasvu.
Muutuse ettevalmistaja arendaja pĂŒĂŒdis samuti ellu viia sĂ”ltuvuste lahendamise koodi prototĂŒĂŒbi C++ vĂ”i Rust keeles, kuid ĂŒlesanne osutus liiga keeruliseks, kuna see nĂ”udis suure hulga koodi portimist ja oli kaheldav, kas saavutatud tulemus oleks kulutatud vaeva vÀÀriline.
Allikas: opennet.ru
