LLVM lld тарабынан иштелип чыккан Mold куруучунун биринчи туруктуу релиз

Rui Ueyama, LLVM lld шилтемесинин жана chibicc компиляторунун автору, объект файлдарын байланыштыруу ылдамдыгы боюнча GNU gold жана LLVM lld шилтемелерине караганда байкаларлык тезирээк жаңы жогорку өндүрүмдүүлүктөгү Mold шилтемесинин биринчи туруктуу чыгарылышын сунуштады. Долбоор өндүрүштү ишке ашырууга даяр деп эсептелет жана Linux системаларында GNU шилтемесин тезирээк, ачык-айкын алмаштыруу катары колдонсо болот. Кийинки негизги чыгаруунун пландарына macOS платформасын колдоону аяктоо кирет, андан кийин Windows үчүн Mold адаптациялоо иштери башталат.

Мол C++ (C++ 20) тилинде жазылган жана AGPLv3 боюнча лицензияланган, ал GPLv3 менен шайкеш келет, бирок GPLv2 менен шайкеш келбейт, анткени тармактык кызматтарды иштеп чыгууда ачык өзгөртүүлөрдү талап кылат. Бул тандоо өнүгүүнү каржылоону алуу каалоосу менен түшүндүрүлөт - автор MIT сыяктуу уруксат берүүчү лицензиянын негизинде кайра лицензиялоо үчүн кодго болгон укуктарды сатууга же AGPLге канааттанбагандар үчүн өзүнчө коммерциялык лицензия берүүгө даяр.

Mold GNU шилтемесинин бардык мүмкүнчүлүктөрүн колдойт жана өтө жогорку өндүрүмдүүлүккө ээ - шилтемелөө cp утилитасы менен файлдарды жөн эле көчүрүүнүн жарымы гана ылдамдыкта аткарылат. Мисалы, Chrome 96 түзүүдө (коддун көлөмү 1.89 ГБ) GNU gold, LLVM lld - 8 секунд жана Mold аркылуу 53 ядролук компьютерде мүчүлүштүктөрдү аныктоо маалыматы менен аткарылуучу файлдарды байланыштыруу 11.7 секундду талап кылат, ал эми Mold болгону 2.2 секунд (26 эсе тезирээк). GNU алтын). Clang 13ти (3.18 ГБ) байланыштырганда, GNU алтынында 64 секунд, LLVM lldде 5.8 секунд жана Moldдо 2.9 секунд талап кылынат. Firefox 89 (1.64 ГБ) түзүүдө GNU алтында 32.9 секунд, LLVM lldде 6.8 секунд, Moldдо 1.4 секунд талап кылынат.

LLVM lld тарабынан иштелип чыккан Mold куруучунун биринчи туруктуу релиз

Түзүү убактысын кыскартуу өзгөрүүлөрдү оңдоодо жана текшерүүдө аткарылуучу файлдарды түзүү процессинде күтүүнү кыскартуу аркылуу чоң долбоорлорду иштеп чыгуунун ыңгайлуулугун бир топ жакшыртат. Молдду түзүүгө түрткү болгон ар бир кодду өзгөрткөндөн кийин байланышты бүтүрүүнү күтүүнүн капалыгы, көп ядролуу системалардагы учурдагы шилтемелердин начар иштеши жана өтө татаал моделдерге кайрылбастан, түп-тамырынан бери башка шилтеме архитектурасын сынап көрүү каалоосу болгон. кошумча шилтеме катары.

Молддогу компилятор тарабынан даярдалган көп сандагы объект файлдарынан аткарылуучу файлды байланыштыруунун жогорку натыйжалуулугуна ылдамыраак алгоритмдерди колдонуу, колдо болгон CPU өзөктөрүнүн ортосундагы операцияларды активдүү параллелдештирүү жана кыйла эффективдүү маалымат структураларын колдонуу аркылуу жетишилет. Мисалы, Mold файлдарды көчүрүү учурунда интенсивдүү эсептөөлөрдү жүргүзүү, объекттик файлдарды эстутумга алдын ала жүктөө, символдорду чечүү үчүн тез хэш таблицаларын колдонуу, өзүнчө жипте жайгаштыруу таблицаларын сканерлөө жана ар кандай файлдарда кайталануучу бириктирилген бөлүмдөрдү дедупликациялоо ыкмаларын ишке ашырат.

Source: opennet.ru

Комментарий кошуу