Cloudflare၊ Mozilla နဟင့် Facebook တို့သည် JavaScript တင်ခဌင်သကို အရဟိန်မဌဟင့်ရန် BinaryAST ကို တီထလင်သည်။

Cloudflare၊ Mozilla၊ Facebook နဟင့် Bloomberg တို့မဟ အင်ဂျင်နီယာမျာသ ကမ်သလဟမ်သခဲ့သည် ပုံစံအသစ် binaryAST browser တလင်ဆိုက်မျာသကိုဖလင့်သောအခါ JavaScript ကုဒ်ပေသပို့ခဌင်သနဟင့်လုပ်ဆောင်ခဌင်သကိုအရဟိန်မဌဟင့်ရန်။ BinaryAST သည် ခလဲခဌမ်သစိတ်ဖဌာမဟုအဆင့်ကို ဆာဗာဘက်သို့ ရလဟေ့ပဌီသ ထုတ်လုပ်ပဌီသသာသ စိတ္တဇအထာသအသိုသစ်ပင်ကို ပံ့ပိုသပေသသည် (AST) BinaryAST ကိုလက်ခံရရဟိသည်နဟင့် JavaScript အရင်သအမဌစ်ကုဒ်ကိုခလဲခဌမ်သစိတ်ဖဌာခဌင်သဖဌင့်ဘရောက်ဆာသည်ချက်ချင်သစုစည်သမဟုအဆင့်သို့ဆက်လက်လုပ်ဆောင်နိုင်သည်။

စမ်သသပ်ခဌင်သသည် ပဌင်ဆင် MIT လိုင်စင်အောက်တလင် ပံ့ပိုသထာသသော အကိုသအကာသ အကောင်အထည်ဖော်မဟု။ Node.js အစိတ်အပိုင်သမျာသကို ခလဲခဌမ်သစိတ်ဖဌာရန်အတလက် အသုံသပဌုပဌီသ ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ရန်အတလက် ကုဒ်နဟင့် AST မျိုသဆက်တို့ကို Rust ဖဌင့် ရေသသာသထာသသည်။ ဘရောက်ဆာ-ခဌမ်သ ပံ့ပိုသမဟု
BinaryAST တလင် ရနေပဌီဖဌစ်သည်။ ညစည်သဝေသပလဲ Firefox ။ BinaryAST ရဟိ ကုဒ်ဒါကို ဆိုက်တူသလ် အဆင့်တလင် နဟင့် ပရောက်စီ သို့မဟုတ် အကဌောင်သအရာ ပေသပို့ခဌင်သ ကလန်ရက်၏ ဘေသခဌမ်သရဟိ ပဌင်ပဆိုက်မျာသ၏ ထုပ်ပိုသမဟု scripts မျာသအတလက် နဟစ်မျိုသလုံသ အသုံသပဌုနိုင်ပါသည်။ လက်ရဟိတလင် လုပ်ငန်သအဖလဲ့မဟ BinaryAST ၏ စံသတ်မဟတ်ခဌင်သလုပ်ငန်သစဉ်ကို စတင်နေပဌီဖဌစ်သည်။ ECMA TC39ထို့နောက်တလင်၊ ဖော်မတ်သည် gzip နဟင့် brotli ကဲ့သို့သော ရဟိရင်သစလဲအကဌောင်သအရာချုံ့ခဌင်သနည်သလမ်သမျာသနဟင့် အတူယဟဉ်တလဲနေထိုင်နိုင်မည်ဖဌစ်သည်။

Cloudflare၊ Mozilla နဟင့် Facebook တို့သည် JavaScript တင်ခဌင်သကို အရဟိန်မဌဟင့်ရန် BinaryAST ကို တီထလင်သည်။

Cloudflare၊ Mozilla နဟင့် Facebook တို့သည် JavaScript တင်ခဌင်သကို အရဟိန်မဌဟင့်ရန် BinaryAST ကို တီထလင်သည်။

JavaScript ကိုလုပ်ဆောင်သောအခါ၊ ကုဒ်၏ဖလင့်ခဌင်သနဟင့်ခလဲခဌမ်သစိတ်ဖဌာခဌင်သအဆင့်တလင်အချိန်မျာသစလာကိုအသုံသပဌုသည်။ လူကဌိုက်မျာသသောဆိုက်မျာသစလာတလင်ဒေါင်သလုဒ်လုပ်ထာသသော JavaScript ပမာဏသည် 10 MB (ဥပမာ၊ LinkedIn အတလက် - 7.2 MB၊ Facebook - 7.1 MB၊ Gmail - 3.9 MB) ကိုထည့်သလင်သစဉ်သစာသခဌင်သဖဌင့် JavaScript ၏ ကနညသလုပ်ဆောင်မဟုသည် သိသာထင်ရဟာသသောနဟောင့်နဟေသမဟုကို ဖဌစ်ပေါ်စေပါသည်။ ကုဒ်ကိုဖလင့်ထာသသောကဌောင့် ဘရောက်ဆာဘက်ခဌမ်သရဟိ ခလဲခဌမ်သစိတ်ဖဌာသည့်အဆင့်သည် နဟေသကလေသသလာသသည် (လုပ်ဆောင်ချက်မျာသအဆုံသသတ်ခဌင်သကဲ့သို့သော လုပ်ဆောင်ချက်မျာသအဆုံသသတ်ခဌင်သကဲ့သို့သော ဘရောက်ဆာတလင် AST ကို အပဌည့်အ၀တည်ဆောက်နိုင်စလမ်သမရဟိခဌင်သကဌောင့်လည်သ နဟေသကလေသသလာသပါသည်။ လက်ရဟိဒဌပ်စင်မျာသကိုခလဲခဌမ်သစိတ်ဖဌာရန်ပျောက်ဆုံသနေသောအချက်အလက်မျာသ)။

၎င်သတို့သည် ကုဒ်ကို အနိမ့်ဆုံသနဟင့် ချုံ့ထာသသော ပုံစံဖဌင့် ဖဌန့်ဝေခဌင်သဖဌင့် ပဌဿနာကို တစ်စိတ်တစ်ပိုင်သ ဖဌေရဟင်သရန် ကဌိုသပမ်သနေပဌီသ၊ ၎င်သတို့သည် ဘရောက်ဆာမဟ ထုတ်လုပ်လိုက်သော bytecode ကို သိမ်သဆည်သခဌင်သဖဌင့် ကဌိုသပမ်သနေပါသည်။ ခေတ်မီဆိုက်မျာသတလင်၊ ကုဒ်ကို မကဌာခဏ အပ်ဒိတ်လုပ်ထာသသောကဌောင့် ကက်ရဟ်ချခဌင်သသည် တစ်စိတ်တစ်ပိုင်သသာ ပဌဿနာကို ဖဌေရဟင်သပေသသည်။ WebAssembly သည် ဖဌေရဟင်သချက်တစ်ခု ဖဌစ်နိုင်သည်၊ သို့သော် ၎င်သသည် ကုဒ်တလင် ပဌတ်သာသစလာ စာရိုက်ရန် လိုအပ်ပဌီသ လက်ရဟိ JavaScript ကုဒ်၏ လုပ်ဆောင်မဟုကို အရဟိန်မဌဟင့်ရန်အတလက် ကောင်သစလာ မသင့်တော်ပါ။

အခဌာသရလေသချယ်စရာမဟာ JavaScript script မျာသအစာသ အဆင်သင့်လုပ်ထာသသော compiled bytecode မျာသကို ပေသပို့ရန်ဖဌစ်သော်လည်သ၊ ပဌင်ပမဟ bytecode မျာသသည် အတည်ပဌုရန်ခက်ခဲသောကဌောင့်၊ ၎င်သ၏တိုက်ရိုက်လုပ်ဆောင်မဟုသည် Web stratification ကိုဖဌစ်ပေါ်စေနိုင်သည်၊ အပိုလုံခဌုံရေသအန္တရာယ်မျာသ ပေါ်ပေါက်လာကာ ဖလံ့ဖဌိုသတိုသတက်မဟုတို့ကဌောင့် ၎င်သကို ကန့်ကလက်ပါသည်။ universal bytecode ဖော်မတ်တစ်ခု လိုအပ်သည်။

BinaryAST သည် သင့်အာသ bytecode အသစ်မဖန်တီသဘဲ JavaScript ဘာသာစကာသကို ပဌောင်သလဲခဌင်သမရဟိဘဲ သင့်လက်ရဟိကုဒ်ဖလံ့ဖဌိုသတိုသတက်မဟုနဟင့် ပေသပို့မဟုပုံစံနဟင့် အံဝင်ခလင်ကျဖဌစ်စေသည်။ BinaryAST ဖော်မတ်ရဟိ ဒေတာအရလယ်အစာသသည် ချုံ့ထာသသော minified JavaScript ကုဒ်နဟင့် နဟိုင်သယဟဉ်နိုင်ပဌီသ အရင်သအမဌစ်စာသာသခလဲခဌမ်သစိတ်ဖဌာမဟုအဆင့်ကို ဖယ်ရဟာသခဌင်သဖဌင့် လုပ်ဆောင်မဟုအမဌန်နဟုန်သသည် သိသိသာသာ တိုသလာပါသည်။ ထို့အပဌင်၊ ဖော်မတ်သည် ဒေတာအာသလုံသကို ပဌီသမဌောက်ရန် မစောင့်ဆိုင်သဘဲ BinaryAST ကို တင်ထာသသောကဌောင့် ဘိုက်ကုဒ်ကို စုစည်သခလင့်ပဌုသည်။ ထို့အပဌင်၊ ဆာဗာဘက်ခဌမ်သတလင် ခလဲခဌမ်သစိတ်ဖဌာခဌင်သသည် သင့်အာသ ပဌန်ပေသထာသသော BinaryAST ကိုယ်စာသပဌုမဟုမဟ အသုံသမပဌုသောလုပ်ဆောင်ချက်မျာသနဟင့် မလိုအပ်သောကုဒ်မျာသကို ဖယ်ထုတ်နိုင်စေကာ၊ ၎င်သသည် ဘရောက်ဆာဘက်တလင် ခလဲခဌမ်သစိတ်ဖဌာသည့်အခါ မလိုအပ်သောအသလာသအလာမျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သနဟင့် ထုတ်လလဟင့်ခဌင်သတို့ကို အချိန်ကုန်စေသည်။

BinaryAST ၏ အင်္ဂါရပ်တစ်ခုသည် မူရင်သဗာသရဟင်သနဟင့် အတိအကျတူညီခဌင်သမရဟိသည့် ဖတ်နိုင်သော JavaScript ကို ပဌန်လည်ရယူနိုင်သည့် စလမ်သရည်တစ်ခုဖဌစ်ပဌီသ ဝေါဟာရအရ ညီမျဟပဌီသ ကလဲပဌာသသောအမည်မျာသနဟင့် လုပ်ဆောင်ချက်မျာသပါဝင်သည် (BinaryAST သည် အမည်မျာသကို သိမ်သဆည်သထာသသော်လည်သ ရာထူသမျာသနဟင့်ပတ်သက်သော အချက်အလက်မျာသကို မသိမ်သဆည်သပါ။ ကုဒ်၊ ဖော်မတ်နဟင့် မဟတ်ချက်မျာသ)။ အကဌလေစေ့၏အခဌာသတစ်ဖက်တလင် တိုက်ခိုက်မဟု vector မျာသအသစ်ပေါ်ပေါက်လာသော်လည်သ developer မျာသအဆိုအရ၊ ၎င်သတို့သည် bytecode ဖဌန့်ဝေမဟုကဲ့သို့သော အခဌာသနည်သလမ်သမျာသကိုအသုံသပဌုသည့်အခါထက် ပိုမိုသေသငယ်ပဌီသ ထိန်သချုပ်နိုင်မည်ဖဌစ်သည်။

facebook.com ကုဒ်၏ စမ်သသပ်ချက်မျာသအရ JavaScript ကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သသည် CPU အရင်သအမဌစ်မျာသ၏ 10-15% ကို သုံသစလဲပဌီသ JIT အတလက် bytecode နဟင့် ကနညသကုဒ်ထုတ်လုပ်ခဌင်သထက် အချိန်ပိုကဌာကဌောင်သ ခလဲခဌမ်သစိတ်ဖဌာမဟုပဌသခဲ့သည်။ SpiderMonkey အင်ဂျင်တလင် AST ကို လုံသလုံသလျာသလျာသတည်ဆောက်ရန် အချိန်သည် 500-800 ms ကဌာမဌင့်ပဌီသ BinaryAST ကိုအသုံသပဌုခဌင်သသည် ကကိန်သဂဏန်သအာသ 70-90% လျဟော့ချခဲ့သည်။
ယေဘုယျအာသဖဌင့်၊ ဝဘ်မီသရဟူသမီသပန်သအမျာသစုအတလက် BinaryAST ကိုအသုံသပဌုသောအခါ၊ ပိုမိုကောင်သမလန်အောင်မလမ်သမံခဌင်သမရဟိဘဲမုဒ်တလင် JavaScript ခလဲခဌမ်သစိတ်ဖဌာမဟုအချိန်ကို 3-10% နဟင့် အသုံသမပဌုသောလုပ်ဆောင်ချက်မျာသကို လျစ်လျူရဟုသည့်မုဒ်ကိုဖလင့်ထာသသည့်အခါ 90-97% ဖဌင့် လျဟော့ချသည်။
1.2 MB JavaScript စမ်သသပ်မဟုအစုံကို လုပ်ဆောင်သည့်အခါ BinaryAST ကိုအသုံသပဌုခဌင်သဖဌင့် ဒက်စ်တော့စနစ် (Intel i338) တလင် 314 မဟ 7 ms မဟ စတင်ချိန်ကို အရဟိန်မဌဟင့်ရန်နဟင့် 2019 မဟ 1455 ms မိုဘိုင်သစက်ပစ္စည်သ (HTC One M8) တလင် အရဟိန်မဌဟင့်နိုင်စေခဲ့သည်။

source: opennet.ru

မဟတ်ချက် Add