Facebook သည် open source ဖြစ်သော Hermes JavaScript အင်ဂျင်

Facebook သည် open source ပေါ့ပါးသော JavaScript အင်ဂျင် Hermesမူဘောင်ကို အခြေခံ၍ လုပ်ဆောင်နေသော အက်ပ်လီကေးရှင်းများအတွက် အကောင်းဆုံးဖြစ်အောင် ပြုလုပ်ထားသည်။ ဇာတိရင်တွင်းစကား Android ပလပ်ဖောင်းပေါ်တွင်။ Hermes ပံ့ပိုးမှု built-in ယနေ့ထွက်ရှိထားသော 0.60.2 မှစတင်သည့် React Native တွင်။ ပရောဂျက်သည် မူရင်း JavaScript အပလီကေးရှင်းများနှင့် သိသာထင်ရှားသော အရင်းအမြစ်သုံးစွဲမှုများအတွက် ကြာမြင့်သော စတင်ချိန်နှင့် ပြဿနာများကို ဖြေရှင်းရန် ဒီဇိုင်းထုတ်ထားသည်။ ကုဒ် ကရေးသားခဲ့သည် C++ ဖြင့် MIT လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

Hermes ကိုအသုံးပြုခြင်း၏ အားသာချက်များထဲတွင်၊ အက်ပ်စတင်ဖွင့်ချိန်ကို လျှော့ချခြင်း၊ မှတ်ဉာဏ်သုံးစွဲမှု လျော့နည်းခြင်းနှင့် လျှောက်လွှာအရွယ်အစား လျှော့ချခြင်းတို့ ပါဝင်သည်။ V8 ကိုအသုံးပြုသောအခါတွင်၊ အချိန်ကုန်ဆုံးအဆင့်များသည် အရင်းအမြစ်ကုဒ်ကို ခွဲခြမ်းစိတ်ဖြာပြီး ၎င်းကို အလျင်အမြန်စုစည်းခြင်းအဆင့်များဖြစ်သည်။ Hermes သည် ဤအဆင့်များကို တည်ဆောက်သည့်အဆင့်သို့ ယူဆောင်လာပြီး အပလီကေးရှင်းများကို ကျစ်လစ်ပြီး ထိရောက်သော bytecode ပုံစံဖြင့် ပေးပို့နိုင်စေပါသည်။

အပလီကေးရှင်းကို တိုက်ရိုက်လုပ်ဆောင်ရန်၊ ပရောဂျက်အတွင်း တီထွင်ထားသော virtual machine ကို လိုအပ်သလောက်သာ ပိတ်ဆို့ပေးသည် (On-demand)၊ blocks များကို ရွေ့လျားခြင်းနှင့် defragmentation ပြုလုပ်ခြင်းတို့ကို ပံ့ပိုးပေးသည့် SemiSpace အမှိုက်စုဆောင်းသူကို အသုံးပြုပြီး လည်ပတ်မှုစနစ်သို့ အခါအားလျော်စွာ မလိုအပ်ဘဲ၊ အမှိုက်ပုံတစ်ခုလုံး၏ အကြောင်းအရာများကို စကင်န်ဖတ်ခြင်း။

JavaScript လုပ်ဆောင်ခြင်းကို အဆင့်များစွာ ခွဲခြားထားသည်။ ဦးစွာ၊ အရင်းအမြစ်စာသားများကို ခွဲခြမ်းစိပ်ဖြာပြီး ကုဒ်၏အလယ်အလတ်ကိုယ်စားပြုမှုကို ထုတ်ပေးသည် (Hermes IR) ကိုယ်စားပြုမှုအပေါ်အခြေခံသည်။ ရှမ်းပြည်တောင်ပိုင်း ( Static Single Assignment )။ ထို့နောက်၊ ပရိုဂရမ်၏မူလအသုံးအနှုန်းကို ထိန်းသိမ်းထားစဉ်တွင် မူလအလယ်အလတ်ကုဒ်ကို ပိုမိုထိရောက်သော အလယ်အလတ်ကိုယ်စားပြုမှုအဖြစ်သို့ ပြောင်းလဲရန်အတွက် အလယ်အလတ်ကိုယ်စားပြုမှုကို ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်သည့်ဆော့ဖ်ဝဲတစ်ခုတွင် လုပ်ဆောင်ပါသည်။ နောက်ဆုံးအဆင့်တွင်၊ မှတ်ပုံတင်ထားသော virtual machine အတွက် bytecode ကိုထုတ်ပေးသည်။

အင်ဂျင်ထဲမှာ မှထောက်ပံ့သည် ECMAScript 2015 JavaScript စံနှုန်း၏ တစ်စိတ်တစ်ပိုင်း (အဆုံးစွန်သော ရည်မှန်းချက်မှာ ၎င်းကို အပြည့်အဝ ပံ့ပိုးပေးရန်ဖြစ်သည်) နှင့် လက်ရှိ React Native အပလီကေးရှင်းအများစုနှင့် လိုက်ဖက်ညီမှုကို ပေးဆောင်သည်။ Hermes သည် ထုတ်ပြန်ချက်များ၊ ရောင်ပြန်ဟပ်မှု (Reflect နှင့် Proxy)၊ Intl API နှင့် RegExp ရှိ အချို့သော အလံများပါရှိသော ဒေသန္တရ eval() အား ကွပ်မျက်မှုကို မပံ့ပိုးရန် ဆုံးဖြတ်ခဲ့သည်။ React Native အပလီကေးရှင်းတစ်ခုတွင် Hermes ကိုဖွင့်ရန်၊ ပရောဂျက်တွင် "enableHermes: true" option ကိုထည့်ရုံသာဖြစ်သည်။ ၎င်းသည် CLI မုဒ်တွင် Hermes ကိုတည်ဆောက်နိုင်ပြီး၊ သင့်အား command line မှ မတရား JavaScript ဖိုင်များကို execute လုပ်ခွင့်ပေးသည်။ ဆော့ဖ်ဝဲရေးသားခြင်းမုဒ်ကို ဆော့ဖ်ဝဲရေးသားခြင်းအတွက် အသုံးပြုနိုင်သည်၊ ၎င်းသည် ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်အတွင်း အချိန်တိုင်း JavaScript ကို မစုစည်းနိုင်ဘဲ၊ စက်တွင်ရှိပြီးသား bytecode ကိုထုတ်ပေးရန် ခွင့်ပြုထားသည်။

တစ်ချိန်တည်းမှာပင် Facebook သည် Node.js အတွက် Hermes နှင့် အခြားဖြေရှင်းချက်များအတွက် မိုဘိုင်းအက်ပလီကေးရှင်းများပေါ်တွင်သာ အာရုံစိုက်ထားခြင်းမရှိပါ (JIT အစား AOT စုစည်းမှုသည် အကောင်းဆုံးဖြစ်ပြီး RAM အကန့်အသတ်နှင့် Flash ပိုနှေးသော မိုဘိုင်းစနစ်များတွင် အကောင်းဆုံးဖြစ်သည်)။ Microsoft ဝန်ထမ်းများမှ ပြုလုပ်သော ပဏာမ စွမ်းဆောင်ရည် စမ်းသပ်ခြင်း။ ထင်ရှားHermes ကိုအသုံးပြုသောအခါ၊ Android အတွက် Microsoft Office အပလီကေးရှင်းကို 1.1 စက္ကန့်အတွင်းအသုံးပြုနိုင်မည်ဖြစ်သည်။ စတင်ပြီးသည်နှင့် 21.5MB RAM ကိုစားသုံးသည်၊ V8 အင်ဂျင်ကိုအသုံးပြုသောအခါစတင်ရန် 1.4 စက္ကန့်ကြာပြီးမှတ်ဉာဏ်သုံးစွဲမှုသည် 30MB ဖြစ်သည်။

ထပ်လောင်း: Facebook ပုံနှိပ်ထုတ်ဝေ ကိုယ်ပိုင်စမ်းသပ်မှုရလဒ်များ။ MatterMost အက်ပလီကေးရှင်းဖြင့် Hermes ကိုအသုံးပြုသောအခါ၊ အလုပ်အတွက် စတင်ရရှိနိုင်ချိန် (TTI၊ Time To Interact) သည် 4.30 မှ 2.01 စက္ကန့်သို့ လျော့နည်းသွားသည်၊ APK ပက်ကေ့ဂျ်၏အရွယ်အစားသည် 41 မှ 22 MB သို့ လျှော့ချလိုက်ပြီး မှတ်ဉာဏ်သုံးစွဲမှု 185 မှ 136 MB

source: opennet.ru

မှတ်ချက် Add