LLVM lld-ek garatutako Mold builder-aren lehen bertsio egonkorra

Rui Ueyama, LLVM lld linker eta chibicc konpilatzailearen egileak, errendimendu handiko Mold linker berriaren lehen bertsio egonkorra aurkeztu zuen, zeina GNU gold eta LLVM lld estekatzaileen aurretik dagoen objektu-fitxategiak lotzeko abiadurari dagokionez. Proiektua ekoizpen-inplementazioetarako prest dago eta Linux sistemetan GNU estekatzailearen ordezko garden eta azkarrago gisa erabil daiteke. Hurrengo bertsio nagusirako planen artean, macOS plataformarako laguntza prest egotea da, eta ondoren Mold Windows-erako moldatzeko lanak hasiko dira.

Mold C++-n (C++20) idatzita dago eta AGPLv3 lizentziapean banatzen da, hau da, GPLv3 eta GPLv2-ren arabera, sareko zerbitzuak garatzerakoan aldaketak ireki behar direlako. Aukera hori garapen-finantzaketa lortu nahiari zor zaio - egilea prest dago lizentzia baimendu baten pean berriro lizentziatzeko kodearen eskubideak saltzeko, hala nola MIT, edo AGPLrekin konforme ez daudenentzat merkataritza-lizentzia bereizia emateko.

Moldek GNU estekatzailearen ezaugarri guztiak onartzen ditu eta oso azkarra da, fitxategiak cp-rekin kopiatzearen abiaduraren erdian soilik lotzen du. Adibidez, Chrome 96 eraikitzean (kodearen tamaina 1.89 GB), 8 segundo behar dira c debuginfo exekutagarriak eraikitzeko 53 nukleoko ordenagailu batean GNU gold erabiliz, 11.7 segundo LLVM lld-rako eta 2.2 segundo besterik ez Mold-erako (26 aldiz azkarrago). GNU gold) . Clang 13 (3.18 GB) lotzean, GNU goldek 64 segundo behar ditu, LLVM lld-ek 5.8 segundo eta Moldek 2.9 segundo. Firefox 89 (1.64 GB) lotzean, GNU goldek 32.9 segundo behar ditu, LLVM lld-k 6.8 segundo eta Moldek 1.4 segundo.

LLVM lld-ek garatutako Mold builder-aren lehen bertsio egonkorra

Lotura-denbora murrizteak proiektu handiak garatzeko erabilgarritasuna asko hobetu dezake, arazketan eta aldaketak probatzean fitxategi exekutagarriak sortzeko prozesuan itxaronaldia murriztuz. Moldea kodearen aldaketa bakoitzaren ondoren estekatzera itxaron behar izatearen gogaikarria izan zen, baita lehendik dauden estekatzaileen errendimendu eskasak nukleo anitzeko sistemetan, eta funtsean ezberdina den lotura-arkitektura bat probatzeko nahiak alferrik erabili gabe. eredu konplikatuak, hala nola lotura inkrementalak.

Fitxategi exekutagarri bat Mold-en prestatutako objektu-fitxategi kopuru handi batetik lotzearen errendimendu handia algoritmo azkarragoak erabiliz lortzen da, PUZaren nukleoen arteko eragiketak aktiboki paralelizatuz eta datu-egitura eraginkorragoak erabiliz. Adibidez, Moldek kalkulu intentsiboak fitxategiak kopiatzen aldi berean egiteko teknika inplementatzen du, objektu-fitxategiak memoriara aldez aurretik eskuratzea, karaktereak ebazteko hash-taula azkarrak erabiltzea, lekualdatze-taulak hari bereizi batean eskaneatzea eta fitxategi ezberdinetan errepikatzen diren atal bateratuak desbikoiztea.

Iturria: opennet.ru

Gehitu iruzkin berria