Gentoo projekt tutvustas pakihaldussüsteemi Portage 3.0

Stabiliseeriv pakettide haldamise süsteemi väljalase Portage 3.0, mida kasutatakse jaotises Gentoo Linux. Esitatud haru lõpetas pikaajalise töö üleminekuks Python 3-le ja Python 2.7 toe lõpetamise.

Lisaks Python 2.7 toe lõpetamisele oli teine oluline muudatus optimeerimisi, mis võimaldas arvutusi, mis on seotud sõltuvuste määratlemisega, kiirendada 50-60%. Huvitav, et mõned arendajad pakkusid sõltuvuste lahendamise koodi ümber kirjutamist C/C++-s või Go-s, et töö kiirus kasvada, kuid õnnestus probleem lahendada lihtsate meetoditega.

Koodi profileerimine näitas, et peamine aeg arvutustes kulub funktsioonide use_reduce ja catpkgsplit kutsumisele korduvate argumentide kogumiga (näiteks funktsiooni catpkgsplit kutsuti 1 kuni 5 miljonit korda). Kiirusel saavutasime tulemuste vahemälu rakendamise kaudu nende funktsioonide jaoks, kasutades sõnastikke. Parim lahendus vahemälu hoidmiseks oli sisseehitatud funktsioon lru_cache, kuid see oli saadaval ainult alates Python 3.2 versioonist. Ühilduvuseks varasema versiooniga lisati lru_cache'i asendamise stub, kuid otsus lõpetada Python 2.7 toetamine Portage 3.0-s lihtsustas ülesannet ja võimaldas sellest vahekihist loobuda.

Vahemälu kasutamine aitas vähendada käsu „emerge -uDvpU —with-bdeps=y @world“ täitmise aega ThinkPad X220 sülearvutil 5 minuti 20 sekundi pealt 3 minuti 16 sekundini (63%). Testid teistel süsteemidel näitasid jõudluse kasvu mitte vähem kui 48%.

Muutuse ette valmistanud arendaja proovinud samuti rakendada sõltuvuste lahendamise koodiprototüübi C++ või Rust keeles, kuid ülesanne osutus liiga keeruliseks, kuna see nõudis suures mahus koodi portimist ja samas oli kahtlane, kas saadud tulemus väärt oleks tehtud pingutusi.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster