LLVM lld์—์„œ ๊ฐœ๋ฐœํ•œ ๋ชฐ๋“œ ๋นŒ๋”์˜ ์ฒซ ๋ฒˆ์งธ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค

LLVM lld ๋ง์ปค ๋ฐ chibicc ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ €์ž์ธ Rui Ueyama๋Š” ๊ฐœ์ฒด ํŒŒ์ผ ์—ฐ๊ฒฐ ์†๋„ ์ธก๋ฉด์—์„œ GNU gold ๋ฐ LLVM lld ๋ง์ปค๋ณด๋‹ค ๋ˆˆ์— ๋„๊ฒŒ ์•ž์„  ์ƒˆ๋กœ์šด ๊ณ ์„ฑ๋Šฅ Mold ๋ง์ปค์˜ ์ฒซ ๋ฒˆ์งธ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ฉฐ Linux ์‹œ์Šคํ…œ์—์„œ GNU ๋ง์ปค๋ฅผ ๋ณด๋‹ค ๋น ๋ฅด๊ณ  ํˆฌ๋ช…ํ•˜๊ฒŒ ๋Œ€์ฒดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ๊ณ„ํš์—๋Š” macOS ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ง€์›์„ ์ค€๋น„ ์ƒํƒœ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ํฌํ•จ๋˜๋ฉฐ, ๊ทธ ํ›„์— Mold for Windows๋ฅผ ์ ์šฉํ•˜๋Š” ์ž‘์—…์ด ์‹œ์ž‘๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Mold๋Š” C++(C++20)๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณต๊ฐœํ•ด์•ผ ํ•˜๋ฏ€๋กœ GPLv3๊ณผ ํ˜ธํ™˜๋˜์ง€๋งŒ GPLv3์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” AGPLv2 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ ํƒ์€ ๊ฐœ๋ฐœ ์ž๊ธˆ์„ ์–ป๊ณ ์ž ํ•˜๋Š” ์š•๊ตฌ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ €์ž๋Š” MIT์™€ ๊ฐ™์€ ํ—ˆ์šฉ ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ์žฌ๋ผ์ด์„ ์‹ฑ์„ ์œ„ํ•ด ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ถŒ๋ฆฌ๋ฅผ ๊ธฐ๊บผ์ด ํŒ๋งคํ•˜๊ฑฐ๋‚˜ AGPL์— ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋ณ„๋„์˜ ์ƒ์šฉ ๋ผ์ด์„ ์Šค๋ฅผ ์ œ๊ณตํ•  ์˜ํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Mold๋Š” GNU ๋ง์ปค์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋ฉฐ ๋งค์šฐ ๋น ๋ฅด๋ฉฐ ๋‹จ์ˆœํžˆ cp๋กœ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋Š” ์†๋„์˜ ์ ˆ๋ฐ˜์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Chrome 96(์ฝ”๋“œ ํฌ๊ธฐ 1.89GB)์„ ๋นŒ๋“œํ•  ๋•Œ GNU gold๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 8์ฝ”์–ด ์ปดํ“จํ„ฐ์—์„œ c debuginfo ์‹คํ–‰ ํŒŒ์ผ์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐ 53์ดˆ, LLVM lld์˜ ๊ฒฝ์šฐ 11.7์ดˆ, Mold์˜ ๊ฒฝ์šฐ 2.2์ดˆ์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค(๋ณด๋‹ค 26๋ฐฐ ๋น ๋ฆ„). GNU ๊ธˆ) . Clang 13(3.18GB) ์—ฐ๋™ ์‹œ GNU gold๋Š” 64์ดˆ, LLVM lld๋Š” 5.8์ดˆ, Mold๋Š” 2.9์ดˆ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค. Firefox 89(1.64GB)๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด GNU gold๋Š” 32.9์ดˆ, LLVM lld๋Š” 6.8์ดˆ, Mold๋Š” 1.4์ดˆ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

LLVM lld์—์„œ ๊ฐœ๋ฐœํ•œ ๋ชฐ๋“œ ๋นŒ๋”์˜ ์ฒซ ๋ฒˆ์งธ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค

๋งํฌ ์‹œ๊ฐ„์„ ์ค„์ด๋ฉด ๋””๋ฒ„๊น… ๋ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ…Œ์ŠคํŠธ ์ค‘์— ์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ค์–ด ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์˜ ์œ ์šฉ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Mold๋Š” ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์„ฑ๊ฐ€์‹ฌ๊ณผ ๋ฉ€ํ‹ฐ ์ฝ”์–ด ์‹œ์Šคํ…œ์—์„œ ๊ธฐ์กด ๋ง์ปค์˜ ์„ฑ๋Šฅ ์ €ํ•˜, ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์—ฐ๊ฒฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‹œ๋„ํ•˜๋ ค๋Š” ์š•๊ตฌ์—์„œ ๋™๊ธฐ๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ๋ถ„ ์—ฐ๊ฒฐ๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๋ชจ๋ธ.

Mold์—์„œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ค€๋น„ํ•œ ๋งŽ์€ ์ˆ˜์˜ ๊ฐœ์ฒด ํŒŒ์ผ์—์„œ ์‹คํ–‰ ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณ ์„ฑ๋Šฅ์€ ๋” ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ CPU ์ฝ”์–ด ๊ฐ„์˜ ์ž‘์—…์„ ๋Šฅ๋™์ ์œผ๋กœ ๋ณ‘๋ ฌํ™”ํ•˜๊ณ  ๋ณด๋‹ค ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Mold๋Š” ํŒŒ์ผ ๋ณต์‚ฌ, ๊ฐœ์ฒด ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ, ๋ฌธ์ž๋ฅผ ํ™•์ธํ•  ๋•Œ ๋น ๋ฅธ ํ•ด์‹œ ํ…Œ์ด๋ธ” ์‚ฌ์šฉ, ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ์—์„œ ์žฌ๋ฐฐ์น˜ ํ…Œ์ด๋ธ” ์Šค์บ”, ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ๋ณ‘ํ•ฉ ์„น์…˜ ์ค‘๋ณต ์ œ๊ฑฐ์™€ ๋™์‹œ์— ์ง‘์ค‘์ ์ธ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ์ˆ ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€