ပရိုဂရမ်သမင်သဘာသာစကာသ 10 မျိုသရဟိ ဗာသရဟင်သမျာသတလင် ကလန်ရက်ဒရိုင်ဘာစလမ်သဆောင်ရည်ကို နဟိုင်သယဟဉ်ခဌင်သ။

ဂျာမန်တက္ကသိုလ်မျာသမဟ သုတေသီမျာသအဖလဲ့ ထုတ်ဝေခဲ့သည် ရလဒ်မျာသကို စမ်သသပ်မဟုထိုအချိန်တလင် 10-gigabit Intel Ixgbe (X10xx) ကလန်ရက်ကတ်မျာသအတလက် စံဒရိုက်ဗာ ဗာသရဟင်သ 5 ခုကို မတူညီသော ပရိုဂရမ်သမင်သဘာသာစကာသမျာသဖဌင့် တီထလင်ခဲ့သည်။ ဒရိုက်ဘာသည် အသုံသပဌုသူနေရာလလတ်တလင် အလုပ်လုပ်ပဌီသ C၊ Rust၊ Go၊ C#၊ Java၊ OCaml၊ Haskell၊ Swift၊ JavaScript နဟင့် Python တို့ဖဌင့် အကောင်အထည်ဖော်ထာသသည်။ ကုဒ်ရေသသောအခါတလင်၊ ဘာသာစကာသတစ်ခုစီ၏ ဝိသေသလက္ခဏာမျာသကို ထည့်သလင်သစဉ်သစာသပဌီသ ဖဌစ်နိုင်သမျဟ အကောင်သဆုံသစလမ်သဆောင်ရည်ကို ရရဟိရန် အဓိကအာရုံစိုက်ပါသည်။ ရလေသချယ်မဟုအာသလုံသသည် လုပ်ဆောင်နိုင်စလမ်သတလင် တူညီပဌီသ ခန့်မဟန်သခဌေအာသဖဌင့် ကုဒ်လိုင်သ 1000 ပါဝင်ပါသည်။ ပရောဂျက်တိုသတက်မဟုမျာသ ကူသစက်ပျံ့နဟံ့သည် BSD လိုင်စင်အောက်တလင်။

ဒရိုင်ဘာ၏ Rust ဗာသရဟင်သသည် C ဘာသာစကာသရဟိ ကိုသကာသမောင်သနဟင်သူနဟင့် အလလန်နီသကပ်စလာ စလမ်သဆောင်နိုင်ခဲ့သည်။ အတုံသ 32 ထုပ်ကို တပဌိုင်နက် ပေသပို့ခဌင်သနဟင့်အတူ Rust driver သည် အနည်သငယ် နောက်ကျသလာသသော်လည်သ တစ်တုံသလျဟင် 32 packet ကျော်ဖဌင့် စမ်သသပ်ရာတလင် မဌန်နဟုန်သမဟာ လက်တလေ့တလင် C driver နဟင့် မကလာခဌာသဘဲ လုပ်ဆောင်ချက် 28 million အဆင့်တလင် စလမ်သဆောင်ရည်ကို ပဌသခဲ့သည်။ Xeon CPU E3-1230 v2 3.3 GHz ရဟိသော ဆာဗာတလင် တစ်စက္ကန့်လျဟင် ပက်ကတ်မျာသ။

ပရိုဂရမ်သမင်သဘာသာစကာသ 10 မျိုသရဟိ ဗာသရဟင်သမျာသတလင် ကလန်ရက်ဒရိုင်ဘာစလမ်သဆောင်ရည်ကို နဟိုင်သယဟဉ်ခဌင်သ။

စလမ်သဆောင်ရည်နဟင့်ပတ်သက်သည့်နောက်ထပ်နယ်ပယ်ကို Go နဟင့် C# ဘာသာစကာသမျာသတလင် ယာဉ်မောင်သမျာသက သိမ်သပိုက်ထာသပဌီသ၊ အတော်အတန်နီသစပ်သောရလဒ်မျာသပဌသခဲ့သည် (Go driver သည် စမ်သသပ်မဟုတလင် 16 packet အထိ တုံသမျာသဖဌင့် အနိုင်ရခဲ့ပဌီသ 16 packet ကျော်ဖဌင့် စမ်သသပ်မဟုမျာသတလင် အနည်သငယ် ဆုံသရဟုံသသလာသသည် ဘလောက်တစ်ခုတလင်)။ တစ်တုံသလျဟင် 256 packets ဖဌင့် C# driver ၏ အထလတ်အထိပ်စလမ်သဆောင်ရည်မဟာ တစ်စက္ကန့်လျဟင် packets 28 သန်သခန့်ရဟိပဌီသ Go driver သည် တစ်စက္ကန့်လျဟင် packets 25 သန်သခန့်ရဟိသည်။

နောက်တစ်ခုကတော့ အတော်လေသ နီသစပ်တဲ့ ရလဒ်တလေနဲ့ ယာဉ်မောင်သတလေအတလက်ပဲ ဖဌစ်ပါတယ်။
Java၊ OCaml နဟင့် Haskell တို့သည် ယခင်သတ်မဟတ်ထာသသော ရလေသချယ်မဟုမျာသနောက်တလင် သိသိသာသာ နောက်ကျနေပဌီသ တစ်စက္ကန့်လျဟင် ပက်ကတ် ၁၂ သန်သကို မကျော်လလဟာသနိုင်ပေ။ Swift နဟင့် JavaScript driver မျာသသည် တစ်စက္ကန့်လျဟင် packet 12 သန်သအဆင့်တလင် streams မျာသကို စီမံဆောင်ရလက်နိုင်ခဌင်သမဟာ ပိုကဌီသမာသသော နောက်ကျမဟုကို ပဌသခဲ့သည်။

Python driver မဟ ထိပ်တန်သအဆင့်ကို ပဌီသမဌောက်ခဲ့ပဌီသ၊ တစ်စက္ကန့်လျဟင် 0.14 သန်သ packets မျာသကိုသာ လုပ်ဆောင်နိုင်ခဲ့သည်။ Python အကောင်အထည်ဖော်မဟုကို JIT မပါဘဲ စကာသပဌန်မျာသ၏ အမဌန်နဟုန်သကို အကဲဖဌတ်ရန်နဟင့် တိကျသော ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သမရဟိဘဲ (ကုဒ်ကို CPython 3.7 ကို အသုံသပဌု၍ လုပ်ဆောင်ခဲ့ပဌီသ PyPy နဟင့် ကိုက်ညီမဟုမရဟိပါ၊ သို့သော် ဒေတာသိုလဟောင်မဟုတည်ဆောက်ပုံမျာသကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သသည် စလမ်သဆောင်ရည်ကို 10 ဆခန့် တိုသတက်စေနိုင်ကဌောင်သ မဟတ်သာသထာသသည်။ )

ထို့အပဌင် တုံ့ပဌန်မဟု၏ထိရောက်မဟုနဟင့် အမဟိုက်စုဆောင်သသူ၏အကျိုသသက်ရောက်မဟုကိုပဌသရန် latency စမ်သသပ်မဟုမျာသကို ပဌုလုပ်ခဲ့သည်။ ပက်ကေ့ခ်ျတစ်ခုစီကို ယာဉ်မောင်သက ပေသပို့လိုက်သည့်အချိန်အတိအကျနဟင့် နဟိုင်သယဟဉ်ပဌီသနောက် စမ်သသပ်မဟုသည် ကဌာမဌင့်ချိန်ကို တိုင်သတာသည်။ ခေါင်သဆောင်မျာသသည် C နဟင့် Rust drivers မျာသဖဌစ်နေဆဲဖဌစ်ပဌီသ၊ ယင်သရလဒ်မျာသသည် တစ်စက္ကန့်လျဟင် packets 1 သန်သ (ခန့်မဟန်သခဌေအာသဖဌင့် 20 µs) စီသဆင်သမဟုအတလက် လက်တလေ့ကျကျ ခလဲခဌာသ၍မရပေ။ Go driver သည် ခေါင်သဆောင်မျာသ၏နောက်တလင် အနည်သငယ်သာရဟိကာ 20 µs အဆင့်တလင် ကျန်ရဟိနေပါသည်။ C# driver သည် ခန့်မဟန်သခဌေ 50 µs နဟောင့်နဟေသမဟုကို ပဌသခဲ့သည်။
အရဟည်ကဌာဆုံသနဟောင့်နဟေသမဟုမျာသကို JavaScript နဟင့် Java ဒရိုက်ဘာမျာသ (300 µs ထက်ပိုသော latencies) မဟပဌသခဲ့သည်။

ပရိုဂရမ်သမင်သဘာသာစကာသ 10 မျိုသရဟိ ဗာသရဟင်သမျာသတလင် ကလန်ရက်ဒရိုင်ဘာစလမ်သဆောင်ရည်ကို နဟိုင်သယဟဉ်ခဌင်သ။

အဆိုပါလေ့လာမဟုကို C ထက်အဆင့်မဌင့်သောဘာသာစကာသမျာသဖဌင့် drivers မျာသနဟင့် operating system အစိတ်အပိုင်သမျာသကိုတီထလင်နိုင်ခဌေကိုအကဲဖဌတ်ရန်ပဌုလုပ်ခဲ့သည်။ လက်ရဟိတလင် Linux တလင် memory ပဌဿနာ 39 တလင် 40 သည် driver မျာသနဟင့်ဆက်စပ်နေသောကဌောင့် ပိုမိုလုံခဌုံသောဘာသာစကာသကိုအသုံသပဌုကာ kernel မဟ driver မျာသကိုရလဟေ့ကာ user space သို့ပဌောင်သရလဟေ့ခဌင်သဆိုင်ရာပဌဿနာမျာသ ဆက်နလယ်နေပါသည်။ ထုတ်လုပ်သူမျာသသည် ကလမ်သညလဟန်ချက်ကို တက်ကဌလစလာ စမ်သသပ်နေပဌီ (ဥပမာ၊ Google သည် OS အတလက် TCP stack တစ်ခုကို တီထလင်ခဲ့သည်။ Fuchsia Go ဘာသာစကာသဖဌင့် CloudFlare ကုမ္ပဏီ ဖန်တီသခဲ့သည်။ Rust တလင် QUIC ပရိုတိုကောကို အကောင်အထည်ဖော်ခဌင်သ၊ Apple သည် မိုဘိုင်သလ်ကိရိယာမျာသပေါ်ရဟိ TCP stack အာသ သုံသစလဲသူနေရာသို့ ရလဟေ့ထာသသည်)။

အလုပ်တလင်၊ Rust ဘာသာစကာသသည် ယာဉ်မောင်သဖလံ့ဖဌိုသမဟုအတလက် အကောင်သဆုံသ ကိုယ်စာသလဟယ်လောင်သဖဌစ်ကဌောင်သ ကောက်ချက်ချခဲ့သည်။ Rust ၏ စလမ်သဆောင်ရည်မျာသသည် C driver မျာသနဟင့် နဟိုင်သယဟဉ်ပါက ခန့်မဟန်သခဌေအာသဖဌင့် 2% မဟ 10% အထိ စလမ်သဆောင်ရည် ဆုံသရဟုံသမဟုတန်ဖိုသဖဌင့် အဆင့်နိမ့်မဟတ်ဉာဏ်စီမံခန့်ခလဲမဟုနဟင့် ဆက်စပ်နေသော ပဌဿနာမျာသကို ဖယ်ရဟာသပေသပါသည်။ Go နဟင့် C# ကို အမဟိုက်စုဆောင်သခဌင်သကဌောင့် လက်ခံနိုင်သော အခဌေအနေမျာသတလင် စနစ်အစိတ်အပိုင်သမျာသကို ဖန်တီသရန်အတလက်လည်သ သင့်လျော်သည်ဟု ယူဆပါသည်။

source: opennet.ru

မဟတ်ချက် Add