Keluaran stabil pertama pembangun acuan yang dibangunkan oleh LLVM lld

Rui Ueyama, pengarang pemaut LLVM lld dan pengkompil chibicc, membentangkan keluaran stabil pertama pemaut Acuan berprestasi tinggi baharu, yang nyata lebih pantas daripada pemaut emas GNU dan LLVM lld dalam kelajuan memautkan fail objek. Projek ini dianggap sedia untuk pelaksanaan pengeluaran dan boleh digunakan sebagai pengganti yang lebih cepat dan telus untuk pemaut GNU pada sistem Linux. Rancangan untuk keluaran utama seterusnya termasuk melengkapkan sokongan untuk platform macOS, selepas itu kerja akan bermula untuk menyesuaikan Mould untuk Windows.

Acuan ditulis dalam C++ (C++20) dan dilesenkan di bawah AGPLv3, yang serasi dengan GPLv3, tetapi tidak serasi dengan GPLv2, kerana ia memerlukan perubahan terbuka apabila membangunkan perkhidmatan rangkaian. Pilihan ini dijelaskan oleh keinginan untuk mendapatkan pembiayaan pembangunan - penulis bersedia untuk menjual hak kepada kod untuk pelesenan semula di bawah lesen permisif, seperti MIT, atau menyediakan lesen komersial yang berasingan bagi mereka yang tidak berpuas hati dengan AGPL.

Acuan menyokong semua ciri pemaut GNU dan mempunyai prestasi yang sangat tinggi - pemautan dilakukan pada kelajuan separuh sepantas hanya menyalin fail dengan utiliti cp. Contohnya, apabila membina Chrome 96 (saiz kod 1.89 GB), ia mengambil masa 8 saat untuk memautkan fail boleh laku dengan info debug pada komputer 53 teras menggunakan emas GNU, LLVM lld - 11.7 saat dan Acuan hanya 2.2 saat (26 kali lebih cepat daripada emas GNU). Apabila memautkan Clang 13 (3.18 GB), ia mengambil masa 64 saat dalam emas GNU, 5.8 saat dalam LLVM lld dan 2.9 saat dalam Acuan. Apabila membina Firefox 89 (1.64 GB), ia mengambil masa 32.9 saat dalam emas GNU, 6.8 saat dalam LLVM lld dan 1.4 saat dalam Acuan.

Keluaran stabil pertama pembangun acuan yang dibangunkan oleh LLVM lld

Mengurangkan masa binaan boleh meningkatkan dengan ketara kemudahan membangunkan projek besar dengan mengurangkan masa menunggu dalam proses menjana fail boleh laku apabila nyahpepijat dan menguji perubahan. Motivasi untuk mencipta Mould ialah kekecewaan kerana perlu menunggu pautan selesai selepas setiap perubahan kod, prestasi buruk pemaut sedia ada pada sistem berbilang teras, dan keinginan untuk mencuba seni bina pemautan yang berbeza secara asasnya tanpa menggunakan model yang terlalu rumit seperti sebagai penghubung tambahan.

Prestasi tinggi untuk memautkan fail boleh laku daripada sejumlah besar fail objek yang disediakan pengkompil dalam Mold dicapai dengan menggunakan algoritma yang lebih pantas, penyejajaran aktif operasi antara teras CPU yang tersedia dan penggunaan struktur data yang lebih cekap. Sebagai contoh, Mold melaksanakan teknik untuk melakukan pengiraan intensif semasa menyalin fail, pra-memuatkan fail objek ke dalam ingatan, menggunakan jadual cincang pantas untuk peleraian aksara, mengimbas jadual penempatan semula dalam urutan yang berasingan dan menyahduplikasi bahagian bercantum yang diulang merentas fail berbeza.

Sumber: opennet.ru

Tambah komen