LLVM lld әзірлеген Mold құрастырушысының бірінші тұрақты шығарылымы

Rui Ueyama, LLVM lld байланыстырғышының және chibicc компиляторының авторы, нысан файлдарын байланыстыру жылдамдығы бойынша GNU gold және LLVM lld сілтемелерінен айтарлықтай жылдамырақ жаңа өнімділігі жоғары Mold сілтемесінің бірінші тұрақты шығарылымын ұсынды. Жоба өндірісті іске асыруға дайын болып саналады және оны Linux жүйелеріндегі GNU сілтемесін жылдамырақ, мөлдір ауыстыру ретінде пайдалануға болады. Келесі негізгі шығарылымға арналған жоспарлар macOS платформасына қолдау көрсетуді аяқтауды қамтиды, содан кейін Windows үшін Mold бейімдеу бойынша жұмыс басталады.

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 gold режимінде 64 секунд, LLVM lld жүйесінде 5.8 секунд және Mold жүйесінде 2.9 секунд кетеді. Firefox 89 (1.64 ГБ) құру кезінде GNU gold режимінде 32.9 секунд, LLVM lld жүйесінде 6.8 секунд және Mold жүйесінде 1.4 секунд қажет.

LLVM lld әзірлеген Mold құрастырушысының бірінші тұрақты шығарылымы

Құрастыру уақытын қысқарту өзгерістерді түзету және сынақтан өткізу кезінде орындалатын файлдарды жасау процесінде күтуді азайту арқылы үлкен жобаларды әзірлеудің ыңғайлылығын айтарлықтай жақсартады. Мольді құруға мотивация әр кодты өзгерткеннен кейін байланыстырудың аяқталуын күту қажеттілігі, көп ядролы жүйелердегі бар байланыстырғыштардың нашар өнімділігі және тым күрделі үлгілерге жүгінбей, түбегейлі басқа байланыстыру архитектурасын сынап көру ниеті болды. қосымша байланыс ретінде.

Мольде компилятормен дайындалған көптеген нысан файлдарынан орындалатын файлды байланыстырудың жоғары өнімділігі жылдамырақ алгоритмдерді пайдалану, қол жетімді процессордың өзектері арасындағы операцияларды белсенді параллельдеу және тиімдірек деректер құрылымдарын пайдалану арқылы қол жеткізіледі. Мысалы, Mold файлдарды көшіру, нысан файлдарын жадқа алдын ала жүктеу, таңбаларды ажырату үшін жылдам хэш кестелерін пайдалану, бөлек ағындағы орын ауыстыру кестелерін сканерлеу және әртүрлі файлдарда қайталанатын біріктірілген бөлімдерді көшіру кезінде қарқынды есептеулерді орындау әдістерін жүзеге асырады.

Ақпарат көзі: opennet.ru

пікір қалдыру