Utoaji wa kwanza thabiti wa mjenzi wa Mold uliotengenezwa na LLVM lld

Rui Ueyama, mwandishi wa kiunganishi cha LLVM lld na mkusanyaji wa chibicc, aliwasilisha toleo la kwanza thabiti la kiunganishi kipya cha utendaji wa juu cha Mold, ambacho kina kasi zaidi kuliko viunganishi vya GNU dhahabu na LLVM lld katika kasi ya kuunganisha faili za vitu. Mradi unachukuliwa kuwa uko tayari kwa utekelezaji wa uzalishaji na unaweza kutumika kama mbadala wa haraka na wa uwazi wa kiunganishi cha GNU kwenye mifumo ya Linux. Mipango ya toleo kuu linalofuata ni pamoja na kukamilisha usaidizi kwa jukwaa la macOS, baada ya hapo kazi itaanza kurekebisha Mold kwa Windows.

Mold imeandikwa kwa C++ (C++20) na imepewa leseni chini ya AGPLv3, ambayo inaoana na GPLv3, lakini haiendani na GPLv2, kwani inahitaji mabadiliko wazi wakati wa kutengeneza huduma za mtandao. Chaguo hili linafafanuliwa na hamu ya kupata ufadhili wa maendeleo - mwandishi yuko tayari kuuza haki za msimbo wa kutoa leseni chini ya leseni ya kuruhusu, kama vile MIT, au kutoa leseni tofauti ya kibiashara kwa wale ambao hawajaridhika na AGPL.

Mold inasaidia vipengele vyote vya kiunganishi cha GNU na ina utendaji wa juu sana - kuunganisha hufanywa kwa kasi nusu tu ya haraka kama kunakili faili tu na matumizi ya cp. Kwa mfano, wakati wa kujenga Chrome 96 (ukubwa wa msimbo wa GB 1.89), inachukua sekunde 8 kuunganisha faili zinazoweza kutekelezwa na debuginfo kwenye kompyuta ya msingi 53 kwa kutumia GNU gold, LLVM lld - sekunde 11.7, na Mold sekunde 2.2 pekee (mara 26 zaidi kuliko dhahabu ya GNU). Wakati wa kuunganisha Clang 13 (GB 3.18), inachukua sekunde 64 katika dhahabu ya GNU, sekunde 5.8 katika LLVM lld, na sekunde 2.9 katika Mold. Wakati wa kuunda Firefox 89 (GB 1.64), inachukua sekunde 32.9 katika dhahabu ya GNU, sekunde 6.8 katika LLVM lld, na sekunde 1.4 katika Mold.

Utoaji wa kwanza thabiti wa mjenzi wa Mold uliotengenezwa na LLVM lld

Kupunguza muda wa kujenga kunaweza kuboresha kwa kiasi kikubwa urahisi wa kuendeleza miradi mikubwa kwa kupunguza kusubiri katika mchakato wa kuzalisha faili zinazoweza kutekelezeka wakati wa kurekebisha na kujaribu mabadiliko. Motisha ya kuunda Mould ilikuwa kufadhaika kwa kungojea kuunganishwa kukamilike baada ya kila mabadiliko ya nambari, utendaji duni wa viunganishi vilivyopo kwenye mifumo ya msingi nyingi, na hamu ya kujaribu usanifu tofauti wa kiunganishi bila kugeukia mifano ngumu sana kama hiyo. kama kiunganishi kinachoongezeka.

Utendaji wa juu wa kuunganisha faili inayoweza kutekelezwa kutoka kwa idadi kubwa ya faili za vitu vilivyotayarishwa na mkusanyaji katika Mold hupatikana kwa kutumia algoriti za kasi zaidi, ulinganifu amilifu wa shughuli kati ya viini vya CPU vinavyopatikana na utumiaji wa miundo bora zaidi ya data. Kwa mfano, Mold hutumia mbinu za kufanya hesabu za kina wakati wa kunakili faili, kupakia faili za kitu kwenye kumbukumbu, kwa kutumia jedwali la haraka la kurekebisha herufi, kuchanganua majedwali ya kuhamisha katika safu tofauti, na kugawanya sehemu zilizounganishwa ambazo hurudiwa katika faili tofauti.

Chanzo: opennet.ru

Kuongeza maoni