LLVM lld မှတီထွင်သော Mold builder ၏ပထမဆုံးတည်ငြိမ်သောထုတ်လွှတ်မှု

LLVM lld linker နှင့် chibicc compiler ၏ရေးသားသူ Rui Ueyama သည် GNU gold နှင့် LLVM lld linkers များထက် Object file linking speed အရ သိသာထင်ရှားသော စွမ်းဆောင်ရည်မြင့် Mold linker အသစ်၏ ပထမဆုံး တည်ငြိမ်သော ထွက်ရှိမှုကို တင်ပြခဲ့ပါသည်။ ပရောဂျက်သည် ထုတ်လုပ်မှုဖြန့်ကျက်မှုအတွက် အဆင်သင့်ဖြစ်နေပြီဟု ယူဆထားပြီး Linux စနစ်များရှိ GNU လင့်ခ်ဘာအတွက် ပိုမိုမြန်ဆန်သော ပွင့်လင်းမြင်သာမှုအစားထိုးမှုအဖြစ် အသုံးပြုနိုင်ပါသည်။ လာမည့်အဓိကထွက်ရှိမှုအတွက်အစီအစဥ်များတွင် macOS ပလပ်ဖောင်းအတွက် အဆင်သင့်ဖြစ်နေစေရန် ပံ့ပိုးကူညီမှုများပါဝင်ပြီး ၎င်းနောက် Windows အတွက် Mold ကို လိုက်လျောညီထွေဖြစ်အောင် လုပ်ဆောင်သွားမည်ဖြစ်သည်။

မှိုကို C++ (C++20) ဖြင့် ရေးသားထားပြီး AGPLv3 လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်၊ GPLv3 နှင့် ကိုက်ညီသော်လည်း GPLv2 နှင့် မကိုက်ညီသောကြောင့်၊ ကွန်ရက်ဝန်ဆောင်မှုများကို ဖော်ဆောင်သည့်အခါတွင် ဖွင့်ရန် အပြောင်းအလဲများ လိုအပ်သောကြောင့် ၎င်းကို ဖွင့်ရန် လိုအပ်ပါသည်။ ဤရွေးချယ်မှုသည် ဖွံ့ဖြိုးရေးရန်ပုံငွေရယူလိုသောဆန္ဒကြောင့်ဖြစ်သည် - စာရေးသူသည် MIT ကဲ့သို့သော ခွင့်ပြုချက်လိုင်စင်တစ်ခုအောက်တွင် လိုင်စင်ပြုလုပ်ရန်အတွက် ကုဒ်လုပ်ပိုင်ခွင့်များကို ရောင်းချရန်ဆန္ဒရှိပါသည် သို့မဟုတ် AGPL ကို မကျေနပ်သူများအတွက် သီးခြားစီးပွားရေးလိုင်စင်တစ်ခု ပေးလိုပါသည်။

Mold သည် GNU linker ၏အင်္ဂါရပ်အားလုံးကိုပံ့ပိုးထားပြီး cp ဖြင့်ဖိုင်များကိုကူးယူခြင်း၏ထက်ဝက်သာမြန်နှုန်းဖြင့်ချိတ်ဆက်ခြင်းသည်အလွန်မြန်ဆန်သည်။ ဥပမာအားဖြင့်၊ Chrome 96 (ကုဒ်အရွယ်အစား 1.89 GB) ကိုတည်ဆောက်သောအခါ GNU gold ကိုအသုံးပြုထားသော 8-core ကွန်ပျူတာတွင် c debuginfo executables များကိုတည်ဆောက်ရန် 53 စက္ကန့်ကြာသည်၊ LLVM lld အတွက် 11.7 စက္ကန့်နှင့် Mold အတွက် 2.2 စက္ကန့်သာကြာသည် (26 ဆထက်ပိုမိုမြန်ဆန်သည် GNU ရွှေ)။ Clang 13 (3.18 GB) ၊ GNU ရွှေကို ချိတ်ဆက်သောအခါ 64 စက္ကန့်ကြာသည်၊ LLVM lld သည် 5.8 စက္ကန့်ကြာပြီး Mold သည် 2.9 စက္ကန့်ကြာသည်။ Firefox 89 (1.64 GB) ကို ချိတ်ဆက်သောအခါ၊ GNU gold သည် 32.9 စက္ကန့် ကြာသည်၊ LLVM lld သည် 6.8 စက္ကန့် ကြာပြီး Mold သည် 1.4 စက္ကန့် ကြာသည်။

LLVM lld မှတီထွင်သော Mold builder ၏ပထမဆုံးတည်ငြိမ်သောထုတ်လွှတ်မှု

လင့်ခ်အချိန်ကို လျှော့ချခြင်းသည် အမှားရှာပြင်ခြင်းနှင့် စမ်းသပ်ခြင်းပြောင်းလဲမှုများအတွင်း လုပ်ဆောင်နိုင်သော ဖိုင်များထုတ်ပေးခြင်းလုပ်ငန်းစဉ်တွင် စောင့်ဆိုင်းချိန်ကို လျှော့ချခြင်းဖြင့် ကြီးမားသောပရောဂျက်များကို ဖော်ဆောင်ရာတွင် အသုံးပြုနိုင်စွမ်းကို ပိုမိုကောင်းမွန်စေပါသည်။ ကုဒ်ပြောင်းလဲမှုတိုင်းပြီးနောက် အပြီးသတ်ချိတ်ဆက်ခြင်းကို စောင့်ဆိုင်းရခြင်းအပြင် Mold သည် Multi-core စနစ်များတွင် ရှိပြီးသားလင့်ခ်များ၏ စွမ်းဆောင်ရည် ညံ့ဖျင်းမှုနှင့် မလိုအပ်ဘဲ အခြေခံကွဲပြားသော ချိတ်ဆက်မှုဗိသုကာကို စမ်းကြည့်လိုစိတ်ကြောင့် Mold သည် လှုံ့ဆော်ခံခဲ့ရပါသည်။ တိုးမြှင့်ချိတ်ဆက်ခြင်းကဲ့သို့သော ရှုပ်ထွေးသော မော်ဒယ်များ။

Mold ရှိ compiler မှ ပြင်ဆင်ထားသော အရာဝတ္ထုဖိုင်အများအပြားမှ executable ဖိုင်တစ်ခုကို ချိတ်ဆက်ခြင်း၏ စွမ်းဆောင်ရည်သည် ပိုမိုမြန်ဆန်သော algorithms များကို အသုံးပြုကာ ရရှိနိုင်သော CPU cores များကြားတွင် လုပ်ဆောင်ချက်များကို တက်ကြွစွာ အပြိုင်လုပ်ဆောင်ခြင်းနှင့် ပိုမိုထိရောက်သော ဒေတာဖွဲ့စည်းပုံများကို အသုံးပြုခြင်းဖြင့် ရရှိနိုင်ပါသည်။ ဥပမာအားဖြင့်၊ Mold သည် ဖိုင်များကိုကူးယူခြင်း၊ အရာဝတ္တုဖိုင်များကို မှတ်ဉာဏ်ထဲသို့ကြိုတင်ရယူခြင်း၊ စာလုံးများကိုဖြေရှင်းသည့်အခါ အမြန် hash tables များကိုအသုံးပြုခြင်း၊ သီးခြား thread တစ်ခုတွင် နေရာရွှေ့ခြင်းဇယားများကို စကင်န်ဖတ်ခြင်းနှင့် မတူညီသောဖိုင်များတွင် ထပ်ခါတလဲလဲ ပေါင်းစပ်ထားသောအပိုင်းများကို ပွားယူခြင်းနှင့်အတူ Mold သည် ပြင်းထန်သောတွက်ချက်မှုများလုပ်ဆောင်သည့်နည်းပညာကို လုပ်ဆောင်သည်။

source: opennet.ru

မှတ်ချက် Add