Cyflwynodd prosiect Gentoo system rheoli pecynnau Portage 3.0

Wedi'i sefydlogi rhyddhau system rheoli pecynnau Portage 3.0, a ddefnyddir yn y dosbarthiad Gentoo Linux. Roedd yr edefyn a gyflwynwyd yn crynhoi'r gwaith hirdymor ar y trawsnewid i Python 3 a diwedd y gefnogaeth i Python 2.7.

Heblaw am ddiwedd y gefnogaeth i Python 2.7, newid pwysig arall oedd cynnwys optimeiddiadau, a oedd yn ei gwneud hi'n bosibl cyflymu cyfrifiadau sy'n ymwneud Γ’ phennu dibyniaethau 50-60%. Yn ddiddorol, awgrymodd rhai datblygwyr ailysgrifennu'r cod datrys dibyniaeth yn C / C ++ neu Go i gyflymu ei weithrediad, ond fe wnaethant lwyddo i ddatrys y broblem bresennol heb fawr o ymdrech.

Roedd proffilio'r cod presennol yn dangos bod y rhan fwyaf o'r amser cyfrifo yn cael ei dreulio yn galw'r swyddogaethau use_reduce a catpkgsplit gyda set ailadroddus o ddadleuon (er enghraifft, galwyd y swyddogaeth catpkgsplit 1 i 5 miliwn o weithiau). Er mwyn cyflymu pethau, defnyddiwyd geiriaduron i gadw canlyniadau'r swyddogaethau hyn. Yr opsiwn gorau ar gyfer storio storfa oedd y swyddogaeth lru_cache adeiledig, ond dim ond mewn datganiadau Python yr oedd ar gael gan ddechrau gyda 3.2. Ar gyfer cydweddoldeb Γ’ fersiynau cynharach, ychwanegwyd bonyn i gymryd lle lru_cache, ond fe wnaeth y penderfyniad i roi'r gorau i gefnogaeth i Python 2.7 yn Portage 3.0 symleiddio'r dasg yn fawr a'i gwneud hi'n bosibl gwneud heb yr haen hon.

Roedd defnyddio’r storfa wedi lleihau amser gweithredu’r gweithrediad β€œemerge -uDvpU β€”with-bdeps=y @world” ar liniadur ThinkPad X220 o 5 munud 20 eiliad i 3 munud 16 eiliad (63%). Dangosodd profion ar systemau eraill gynnydd perfformiad o 48% o leiaf.

Ceisiodd y datblygwr a baratΓ΄dd y newid hefyd weithredu prototeip o'r cod datrys dibyniaeth yn C ++ neu Rust, ond roedd y dasg yn rhy anodd oherwydd bod angen trosglwyddo llawer iawn o god, ac roedd yn amheus a fyddai'r canlyniad yn werth yr ymdrech. .

Ffynhonnell: opennet.ru

Ychwanegu sylw