Gentoo projekt tutvustas paketihaldussüsteemi Portage 3.0

Stabiliseeritud paketihaldussüsteemi väljalase Portage 3.0, mida kasutatakse levitamisel Gentoo Linux. Esitatud lõime võttis kokku pikaajalise töö Python 3-le ülemineku ja Python 2.7 toe lõppemise kallal.

Lisaks Python 2.7 toe lõppemisele oli veel üks oluline muudatus rakenduse kaasamine optimeerimised, mis võimaldas kiirendada sõltuvuste määramisega seotud arvutusi 50-60%. Huvitaval kombel soovitasid mõned arendajad sõltuvuse lahendamise koodi ümber kirjutada C/C++-s või Go-s, et selle töö kiirendada, kuid neil õnnestus olemasolev probleem vähese vaevaga lahendada.

Olemasoleva koodi profileerimine näitas, et suurem osa arvutusajast kulus korduva argumentide komplektiga funktsioonide use_reduce ja catpkgsplit kutsumisele (näiteks funktsiooni catpkgsplit kutsuti 1–5 miljonit korda). Asjade kiirendamiseks kasutati nende funktsioonide tulemuste vahemällu salvestamist sõnaraamatute abil. Parim valik vahemälu salvestamiseks oli sisseehitatud funktsioon lru_cache, kuid see oli saadaval ainult Pythoni versioonides alates versioonist 3.2. Varasemate versioonidega ühilduvuse huvides lisati lru_cache asendamiseks tünn, kuid otsus lõpetada Python 2.7 tugi versioonis Portage 3.0 lihtsustas oluliselt ülesannet ja võimaldas ilma selle kihita hakkama saada.

Vahemälu kasutamine vähendas ThinkPad X220 sülearvuti toimingu „emerge -uDvpU —with-bdeps=y @world” täitmisaega 5 minutilt 20 sekundilt 3 minutilt 16 sekundile (63%). Teiste süsteemide testid näitasid jõudluse kasvu vähemalt 48%.

Muudatuse ette valmistanud arendaja püüdis ka C++ või Rusti sõltuvuse eralduskoodi prototüüpi juurutada, kuid ülesanne oli liiga keeruline, kuna nõudis suure hulga koodide teisaldamist ning oli kaheldav, et tulemus on vaeva väärt. .

Allikas: opennet.ru

Lisa kommentaar