LLVM lld izstrādātā Mold builder pirmā stabilā versija

Rui Ueyama, LLVM lld linkera un Chibicc kompilatora autors, iepazīstināja ar pirmo stabilo jaunā augstas veiktspējas Mold linkera izlaidumu, kas objektu failu saistīšanas ātruma ziņā ievērojami apsteidz GNU zelta un LLVM lld linkerus. Projekts tiek uzskatīts par gatavu ražošanas izvietošanai, un to var izmantot kā ātrāku caurspīdīgu GNU linkera aizstājēju Linux sistēmās. Nākamā lielā laidiena plānos ietilpst macOS platformas atbalsta sagatavošana, pēc tam tiks uzsākts darbs pie Mold pielāgošanas operētājsistēmai Windows.

Mold ir rakstīts C++ (C++20) valodā un tiek izplatīts saskaņā ar AGPLv3 licenci, kas ir saderīga ar GPLv3, bet nav saderīga ar GPLv2, jo, izstrādājot tīkla pakalpojumus, ir jāatver izmaiņas. Šāda izvēle ir saistīta ar vēlmi iegūt attīstības finansējumu – autors ir gatavs pārdot tiesības uz kodu pārlicencēšanai saskaņā ar atļauju licenci, piemēram, MIT, vai nodrošināt atsevišķu komerclicenci tiem, kuri nav apmierināti ar AGPL.

Mold atbalsta visas GNU linkera funkcijas un ir ļoti ātrs, veidojot tikai pusi ātrāk nekā vienkārši kopējot failus ar cp. Piemēram, veidojot pārlūkprogrammu Chrome 96 (koda lielums 1.89 GB), c debuginfo izpildāmo failu izveidošana 8 kodolu datorā, izmantojot GNU gold, aizņem 53 sekundes, LLVM lld — 11.7 sekundes, bet Mold — tikai 2.2 sekundes (26 reizes ātrāk nekā GNU zelts). Saistot Clang 13 (3.18 GB), GNU gold aizņem 64 sekundes, LLVM lld aizņem 5.8 sekundes un Mold aizņem 2.9 sekundes. Sasaistot Firefox 89 (1.64 GB), GNU gold aizņem 32.9 sekundes, LLVM lld aizņem 6.8 sekundes un Mold aizņem 1.4 sekundes.

LLVM lld izstrādātā Mold builder pirmā stabilā versija

Saites laika samazināšana var ievērojami uzlabot lielu projektu izstrādes lietojamību, samazinot gaidīšanu izpildāmo failu ģenerēšanas procesā atkļūdošanas un izmaiņu testēšanas laikā. Pelējuma cēlonis bija kairinājums, kas rodas, kad pēc katrām koda izmaiņām bija jāgaida, līdz saite tiks pabeigta, kā arī esošo saišu sliktā veiktspēja daudzkodolu sistēmās un vēlme izmēģināt principiāli atšķirīgu saistīšanas arhitektūru, nevajadzīgi neizmantojot. sarežģīti modeļi, piemēram, pakāpeniska saistīšana.

Augsta izpildāmā faila saistīšanas veiktspēja no liela skaita objektu failiem, ko kompilators sagatavojis Mold, tiek panākts, izmantojot ātrākus algoritmus, aktīvi paralēli veicot darbības starp pieejamajiem CPU kodoliem un izmantojot efektīvākas datu struktūras. Piemēram, Mold ievieš intensīvu aprēķinu veikšanas paņēmienu vienlaikus ar failu kopēšanu, objektu failu iepriekšēju ielādi atmiņā, ātrās jaucējtabulu izmantošanu rakstzīmju atrisināšanā, pārvietošanas tabulu skenēšanu atsevišķā pavedienā un dažādos failos atkārtoto sapludināto sadaļu atdalīšanu.

Avots: opennet.ru

Pievieno komentāru