LLVM lld-ийн боловсруулсан Mold builder-ийн анхны тогтвортой хувилбар

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

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

Мөөгөнцөр нь GNU холбогчийн бүх функцийг дэмждэг бөгөөд маш өндөр гүйцэтгэлтэй байдаг - холболт нь cp хэрэгслээр файл хуулахаас ердөө хагас дахин хурдан хийгддэг. Жишээлбэл, Chrome 96 (кодын хэмжээ 1.89 ГБ) бүтээхэд GNU gold ашиглан 8 цөмт компьютер дээр дибаг мэдээлэлтэй гүйцэтгэх боломжтой файлуудыг холбоход 53 секунд, LLVM lld - 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 builder-ийн анхны тогтвортой хувилбар

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

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

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх