Gentoo-projekti esitteli Portage 3.0 -paketinhallintajärjestelmän

Vakautettu paketinhallintajärjestelmän julkaisu Portage 3.0, jota käytetään jakelussa Gentoo Linux. Esitetty säie tiivisti pitkäjänteisen työn Python 3:een siirtymisen ja Python 2.7:n tuen päättymisen parissa.

Python 2.7:n tuen päättymisen lisäksi toinen tärkeä muutos oli sen sisällyttäminen optimoinnit, mikä mahdollisti riippuvuuksien määrittämiseen liittyvien laskelmien nopeuttamisen 50-60 %. Mielenkiintoista on, että jotkut kehittäjät ehdottivat riippuvuuden selvityskoodin uudelleenkirjoittamista C/C++:ssa tai Gossa nopeuttaakseen sen toimintaa, mutta he onnistuivat ratkaisemaan olemassa olevan ongelman pienellä vaivalla.

Olemassa olevan koodin profilointi osoitti, että suurin osa laskenta-ajasta kului use_reduce- ja catpkgsplit-funktioiden kutsumiseen toistuvilla argumenteilla (esimerkiksi catpkgsplit-funktiota kutsuttiin 1-5 miljoonaa kertaa). Asian nopeuttamiseksi käytettiin näiden toimintojen tulosten välimuistia sanakirjojen avulla. Paras vaihtoehto välimuistille oli sisäänrakennettu lru_cache-toiminto, mutta se oli saatavilla vain Python-julkaisuissa versiosta 3.2 alkaen. Yhteensopivuuden vuoksi aiempien versioiden kanssa lisättiin tynkä lru_cachen tilalle, mutta päätös lopettaa Python 2.7:n tuki Portage 3.0:ssa yksinkertaisti tehtävää huomattavasti ja mahdollisti ilman tätä kerrosta.

Välimuistin käyttö lyhensi ThinkPad X220 -kannettavassa tietokoneessa "emerge -uDvpU —with-bdeps=y @world" -toiminnon suoritusaikaa 5 minuutista 20 sekunnista 3 minuutista 16 sekuntiin (63 %). Muilla järjestelmillä tehdyt testit osoittivat suorituskyvyn parantuneen vähintään 48 %.

Muutoksen valmisteleva kehittäjä yritti myös ottaa käyttöön riippuvuuden selvityskoodin prototyypin C++:ssa tai Rustissa, mutta tehtävä oli liian vaikea, koska se vaati suuren koodimäärän siirtämistä ja oli epävarmaa, olisiko tulos vaivan arvoinen. .

Lähde: opennet.ru

Lisää kommentti