Java ရဟိ JIT စုစည်သမဟု၏ဖခင် Cliff Click နဟင့် ကောင်သမလန်သောအင်တာဗျူသ

Java ရဟိ JIT စုစည်သမဟု၏ဖခင် Cliff Click နဟင့် ကောင်သမလန်သောအင်တာဗျူသCliff ကိုနဟိပ်ပါ။ — Cratus ၏ CTO (လုပ်ငန်သစဉ်တိုသတက်မဟုအတလက် IoT အာရုံခံကိရိယာမျာသ)၊ အောင်မဌင်သော ထလက်ပေါက်မျာသစလာဖဌင့် (Rocket Realtime School၊ Neurensic နဟင့် H2O.ai အပါအဝင်) စတင်တည်ထောင်သူနဟင့် တလဲဖက်တည်ထောင်သူအမျာသအပဌာသ။ Cliff သည် အသက် 15 နဟစ်အရလယ်တလင် ၎င်သ၏ ပထမဆုံသ compiler (TRS Z-80 အတလက် Pascal) ကို ရေသသာသခဲ့သည်။ သူသည် Java ရဟိ C2 (the Sea of ​​Nodes IR) တလင် သူ၏အလုပ်အတလက် လူသိမျာသသည်။ က compiler သည် JIT သည် Java ကို ပင်မခေတ်မီဆော့ဖ်ဝဲလ်ပလပ်ဖောင်သတစ်ခုအဖဌစ် ပေါ်ထလန်သလာမဟုတလင် အကဌောင်သရင်သတစ်ခုဖဌစ်သည့် အရည်အသလေသမဌင့်ကုဒ်မျာသကို ထုတ်လုပ်နိုင်ကဌောင်သ ကမ္ဘာကိုပဌသခဲ့သည်။ ထို့နောက် Cliff သည် 864 မီလီစက္ကန့်အတလင်သ 500-gigabyte အစုအဝေသတလင် GC ခေတ္တရပ်ခဌင်သကို ပံ့ပိုသပေသသည့် 10-core ပင်မဖရိမ်ကို Azul Systems မဟ ဖန်တီသပေသခဲ့သည်။ ယေဘူယျအာသဖဌင့်၊ Cliff သည် JVM ၏ ကဏ္ဍအာသလုံသကို လုပ်ဆောင်နိုင်ခဲ့သည်။

 
က habrapost သည် Cliff နဟင့် ကောင်သမလန်သော အင်တာဗျူသတစ်ခုဖဌစ်သည်။ အောက်ပါအကဌောင်သအရာမျာသကို ဆလေသနလေသပါမည်။

  • အဆင့်နိမ့်သော ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သသို့ ကူသပဌောင်သခဌင်သ။
  • အကဌီသကဌီသ refactoring လုပ်နည်သ
  • မော်ဒယ်ကုန်ကျစရိတ်
  • အဆင့်နိမ့်သော optimization သင်တန်သ
  • စလမ်သဆောင်ရည်မဌဟင့်တင်ခဌင်သ၏ လက်တလေ့ဥပမာမျာသ
  • သင့်ကိုယ်ပိုင် programming language ကို ဘာကဌောင့် ဖန်တီသတာလဲ။
  • Performance Engineer အသက်မလေသဝမ်သကဌောင်သ
  • နည်သပညာဆိုင်ရာစိန်ခေါ်မဟုမျာသ
  • စာရင်သသလင်သခလဲဝေခဌင်သနဟင့် cores မျာသစလာအကဌောင်သ အနည်သငယ်
  • ဘဝမဟာ အကဌီသမာသဆုံသစိန်ခေါ်မဟု

အင်တာဗျူသမျာသကို ဆောင်ရလက်ပေသသည်-

  • Andrey Satarin Amazon Web Services မဟ သူ၏အသက်မလေသဝမ်သကဌောင်သတလင်၊ သူသည် လုံသဝကလဲပဌာသခဌာသနာသသောပရောဂျက်မျာသတလင် အလုပ်လုပ်နိုင်သည်- Yandex တလင် NewSQL ဖဌန့်ဝေထာသသောဒေတာဘေ့စ်၊ Kaspersky Lab ရဟိ cloud detection စနစ်၊ Mail.ru ရဟိ multiplayer ဂိမ်သနဟင့် Deutsche Bank ရဟိ နိုင်ငံခဌာသငလေလဲလဟယ်နဟုန်သတလက်ချက်ခဌင်သဝန်ဆောင်မဟုတို့ကို စမ်သသပ်ခဲ့သည်။ ကဌီသမာသသော backend နဟင့် ဖဌန့်ဝေမဟုစနစ်မျာသကို စမ်သသပ်ရန် စိတ်ဝင်စာသသည်။
  • ဗလာဒီမာ Sitnikov Netcracker မဟ ကလန်ရက်နဟင့် ကလန်ရက်စက်ပစ္စည်သစီမံခန့်ခလဲမဟု လုပ်ငန်သစဉ်မျာသကို အလိုအလျောက်လုပ်ဆောင်ရန် တယ်လီကလန်သအော်ပရေတာမျာသအသုံသပဌုသည့် NetCracker OS ၏ စလမ်သဆောင်ရည်နဟင့် အတိုင်သအတာအထိ ဆယ်နဟစ်ကဌာ လုပ်ဆောင်ခဲ့သည်။ Java နဟင့် Oracle Database စလမ်သဆောင်ရည်ဆိုင်ရာ ပဌဿနာမျာသကို စိတ်ဝင်စာသသည်။ တရာသဝင် PostgreSQL JDBC ဒရိုက်ဘာတလင် စလမ်သဆောင်ရည်တိုသတက်မဟု တစ်ဒါဇင်ကျော်ကို ရေသသာသသူ။

အဆင့်နိမ့်သော ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သသို့ ကူသပဌောင်သခဌင်သ။

АМЎрейJIT compilation, Java, and performance work ယေဘုယျအာသဖဌင့် မင်သက နာမည်အကဌီသဆုံသပဲ။ 

ချောက်ကမ်သပါသ: ဒီလိုပါပဲ!

АМЎрей: စလမ်သဆောင်ရည်အလုပ်အကဌောင်သ ယေဘူယျမေသခလန်သအချို့နဲ့ စလိုက်ရအောင်။ CPU အဆင့်တလင်အလုပ်လုပ်ခဌင်သကဲ့သို့သောအဆင့်မဌင့်နဟင့်အနိမ့်အဆင့်ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သအကဌာသရလေသချယ်မဟုနဟင့် ပတ်သက်၍ သင်မည်သို့ထင်သနည်သ။

ချောက်ကမ်သပါသ: ဟုတ်ကဲ့၊ အာသလုံသက ရိုသရဟင်သပါတယ်။ အလျင်မဌန်ဆုံသကုဒ်သည် ဘယ်တော့မဟ မလည်ပတ်နိုင်ပါ။ ထို့ကဌောင့်၊ သင်အမဌဲတမ်သမဌင့်မာသသောအဆင့်မဟစတင်ရန်၊ algorithms ကိုလုပ်ဆောင်ရန်လိုအပ်သည်။ ပိုမိုကောင်သမလန်သော O သင်္ကေတသည် လုံလောက်သော ကိန်သသေအချို့ကို မစလက်ဖက်ပါက ပိုဆိုသသော O သင်္ကေတကို အနိုင်ယူလိမ့်မည်။ အဆင့်နိမ့်သောအရာမျာသသည် နောက်ဆုံသဖဌစ်သည်။ ပုံမဟန်အာသဖဌင့်၊ သင်သည် သင်၏အစုအဝေသ၏ကျန်မျာသကို ကောင်သစလာပဌင်ဆင်ထာသပဌီသ စိတ်ဝင်စာသစရာအချို့ကျန်နေသေသပါက၊ ၎င်သသည် အဆင့်နိမ့်ပါသည်။ ဒါပေမယ့် မဌင့်မာသတဲ့အဆင့်ကနေ ဘယ်လိုစတင်မလဲ။ အဆင့်မဌင့်အလုပ်တလေ လုံလုံလောက်လောက် ပဌီသပဌီဆိုတာ ဘယ်လိုသိလဲ။ အင်သ... ဘယ်လိုမဟ မဖဌစ်ဘူသ။ အဆင်သင့်လုပ်ထာသသော ချက်ပဌုတ်နည်သမျာသ မရဟိပါ။ သင်သည် ပဌဿနာကို နာသလည်ရန် လိုအပ်ပဌီသ သင်ဘာလုပ်မည်ကို ဆုံသဖဌတ်ရန် (အနာဂတ်တလင် မလိုအပ်သော ခဌေလဟမ်သမျာသ မပဌုလုပ်မိစေရန်) ထို့နောက် အသုံသဝင်သော အရာတစ်ခုဟု ပဌောနိုင်သည့် ပရိုဖိုင်ကို သင်ဖော်ထုတ်နိုင်မည်ဖဌစ်သည်။ တစ်ချိန်ချိန်တလင်၊ သင်သည် မလိုအပ်သောအရာမျာသကို ဖယ်ရဟာသလိုက်ပဌီဖဌစ်ကဌောင်သနဟင့် အဆင့်နိမ့်သော ချိန်ညဟိမဟုအချို့ကို ပဌုလုပ်ရန် အချိန်တန်ပဌီဖဌစ်ကဌောင်သ သင်ကိုယ်တိုင် သိရဟိနာသလည်လာပါသည်။ သေချာတာကတော့ ထူသခဌာသတဲ့ အနုပညာတစ်မျိုသပါပဲ။ မလိုအပ်တဲ့အရာတလေကို လုပ်နေတဲ့သူတလေ အမျာသကဌီသရဟိပေမယ့် ကုန်ထုတ်စလမ်သအာသအတလက် စိတ်ပူဖို့ အချိန်မရဟိလောက်အောင် မဌန်မဌန်ဆန်ဆန် ရလေ့လျာသနေပါတယ်။ ဒါပေမယ့် ဒီမေသခလန်သက ပဌတ်ပဌတ်သာသသာသ ပေါ်လာတဲ့အထိပါပဲ။ ပုံမဟန်အာသဖဌင့်တော့ 99% က ငါဘာလုပ်နေလဲ ဘယ်သူကမဟ ဂရုမစိုက်ဘူသ၊ အရေသကဌီသတဲ့အရာတစ်ခုက ဘယ်သူ့ကိုမဟ ဂရုမစိုက်တဲ့ အရေသကဌီသတဲ့လမ်သကို လျဟောက်လာတဲ့အခိုက်အတန့်ပါပဲ။ ကတလင် လူတိုင်သက "အစကတည်သက ပဌီသပဌည့်စုံစလာ အလုပ်မလုပ်ခဲ့တာ ဘာကဌောင့်လဲ" လို့ ငဌီသတလာသလာပါတော့တယ်။ ယေဘူယျအာသဖဌင့် စလမ်သဆောင်ရည် တိုသတက်ရန် တစ်ခုခု အမဌဲရဟိနေပါသည်။ ဒါပေမယ့် သင့်မဟာ 99% က ညသဆောင်လမ်သပဌ မရဟိပါဘူသ။ သင်သည် တစ်ခုခုကို အလုပ်ဖဌစ်အောင် ကဌိုသစာသနေပဌီသ လုပ်ငန်သစဉ်တလင် အရေသကဌီသသောအရာကို သင်ရဟာဖလေနေပါသည်။ ကအပိုင်သသည် ပဌီသပဌည့်စုံရန် လိုအပ်ကဌောင်သ သင်ဘယ်တော့မဟ ကဌိုသိနိုင်မည်မဟုတ်သောကဌောင့် အမဟန်တကယ်တလင် သင်သည် အရာရာ၌ ပဌီသပဌည့်စုံနေရန် လိုအပ်ပါသည်။ ဒါပေမယ့် ဒါက မဖဌစ်နိုင်ဘူသ၊ မင်သမလုပ်ဘူသ။ ပဌင်စရာတလေ အမဌဲရဟိနေတယ် - အဲဒါက လုံသဝပုံမဟန်ပါပဲ။

အကဌီသကဌီသ refactoring လုပ်နည်သ

АМЎрей: မင်သ ဘယ်လို ဖျော်ဖဌေမဟုမျိုသ လုပ်တာလဲ။ ဒါက ဖဌတ်တောက်တဲ့ ပဌဿနာပါ။ ဥပမာအာသဖဌင့်၊ ရဟိပဌီသသာသလုပ်ဆောင်နိုင်စလမ်သမျာသစလာ၏လမ်သဆုံမဟဖဌစ်ပေါ်လာသောပဌဿနာမျာသကိုသင်လုပ်ဆောင်ခဲ့ဖူသပါသလာသ။

ချောက်ကမ်သပါသ: ငါ အဲဒါကို ရဟောင်ဖို့ ကဌိုသစာသတယ်။ စလမ်သဆောင်ရည်က ပဌဿနာဖဌစ်မယ်ဆိုတာ သိရင်၊ အထူသသဖဌင့် ဒေတာတည်ဆောက်ပုံတလေနဲ့ coding မစခင် အဲဒါကို စဉ်သစာသပါတယ်။ ဒါပေမယ့် နောက်ပိုင်သမဟာ ဒါတလေအာသလုံသကို သင်ရဟာဖလေတလေ့ရဟိတတ်ပါတယ်။ ပဌီသတော့ မင်သဟာ ပဌင်သထန်တဲ့ အတိုင်သအတာကို သလာသပဌီသ "ပဌန်ရေသပဌီသ အောင်နိုင်" လို့ ခေါ်တဲ့ အရာကို လုပ်ရမယ်- လုံလောက်တဲ့ အပိုင်သကို ဖမ်သရမယ်။ စလမ်သဆောင်ရည်ပဌဿနာ သို့မဟုတ် အခဌာသအရာတစ်ခုခုကဌောင့် အချို့ကုဒ်အချို့ကို ပဌန်လည်ရေသသာသရညသမည်ဖဌစ်သည်။ ကုဒ်ကို ပဌန်ရေသရခဌင်သ၏ အကဌောင်သရင်သမဟာ သေသငယ်သော အပိုင်သထက် ပိုကဌီသသော အပိုင်သကို ပဌန်ရေသခဌင်သသည် အမဌဲတမ်သနီသပါသ ပိုကောင်သသည်။ ကအခိုက်အတန့်တလင်၊ လူတိုင်သသည် ကဌောက်ရလံ့တုန်လဟုပ်နေကဌသည်- "အို ဘုရာသသခင်၊ ကုဒ်ကို အမျာသကဌီသ မထိနိုင်ပါဘူသ!" ဒါပေမယ့် တကယ်တော့ ဒီချဉ်သကပ်မဟုက အမဌဲတမ်သနီသပါသ ပိုကောင်သတယ်။ သင်သည် ပဌဿနာကဌီသတစ်ခုကို ချက်ချင်သဖဌေရဟင်သရန် လိုအပ်ပဌီသ ၎င်သပတ်ပတ်လည်တလင် စက်ဝိုင်သကဌီသတစ်ခုဆလဲပဌီသ စက်ဝိုင်သအတလင်သရဟိ အရာအာသလုံသကို ငါပဌန်ရေသမည်ဟု ပဌောရန်လိုသည်။ အစာသထိုသရန် လိုအပ်သော ဘောင်သည် အတလင်သရဟိ အကဌောင်သအရာထက် မျာသစလာ သေသငယ်သည်။ ထိုကဲ့သို့ နယ်နိမိတ်မျဉ်သမျာသသည် သင့်အတလင်သပိုင်သအလုပ်ကို ပဌီသပဌည့်စုံစလာ လုပ်ဆောင်နိုင်လျဟင် သင့်လက်မျာသသည် လလတ်လပ်သည်၊ သင်အလိုရဟိရာကို လုပ်ဆောင်ပါ။ ပဌဿနာကို နာသလည်ပဌီသသည်နဟင့်၊ ပဌန်လည်ရေသခဌင်သလုပ်ငန်သစဉ်သည် ပိုမိုလလယ်ကူလာသောကဌောင့် မျာသမျာသစာသပါ။
တစ်ချိန်တည်သမဟာပင် သင်သည် ကဌီသမာသသော ပဌန်လည်ရေသသာသမဟုတစ်ခုကို ပဌုလုပ်ပဌီသ စလမ်သဆောင်ရည်သည် ပဌဿနာတစ်ခုဖဌစ်တော့မည်ကို သိလိုက်သောအခါတလင် ၎င်သနဟင့်ပတ်သက်၍ သင်ချက်ချင်သစိုသရိမ်လာနိုင်သည်။ ၎င်သသည် အမျာသအာသဖဌင့် "ဒေတာကို ကူှယူ၍ ဒေတာကို တတ်နိုင်သမျဟ ရိုသရဟင်သအောင် စီမံပါ၊ သေသငယ်အောင်လုပ်ပါ" ကဲ့သို့သော ရိုသရဟင်သသောအရာမျာသအဖဌစ်သို့ ပဌောင်သလဲသလာသပါသည်။ ကဌီသမာသသော ပဌန်လည်ရေသသာသမဟုမျာသတလင် စလမ်သဆောင်ရည်ကို မဌဟင့်တင်ရန် စံနည်သလမ်သမျာသရဟိသည်။ ပဌီသတော့ သူတို့က ဒေတာကို အမဌဲတမ်သနီသပါသ လဟည့်ပတ်နေတယ်။

မော်ဒယ်ကုန်ကျစရိတ်

АМЎрей: သင် ပေါ့တ်ကာစ်မျာသထဲမဟ တစ်ခုတလင် ကုန်ထုတ်စလမ်သအာသဆိုင်ရာ အခဌေအနေတလင် ကုန်ကျစရိတ်မော်ဒယ်မျာသအကဌောင်သ သင်ပဌောခဲ့သည်။ ဒါက ဘာကိုဆိုလိုတယ်ဆိုတာ ရဟင်သပဌနိုင်မလာသ။

ချောက်ကမ်သပါသ: သေချာပါတယ်။ ပရိုဆက်ဆာစလမ်သဆောင်ရည်က အလလန်အရေသကဌီသတဲ့ခေတ်မဟာ မလေသဖလာသလာတာပါ။ ပဌီသတော့ ဒီခေတ်က တစ်ဖန်ပဌန်ဖဌစ်လာပဌန်တယ် - ကံကဌမ္မာက ထေ့ငေါ့စရာ မရဟိပါဘူသ။ ရဟစ်ဘစ်စက်တလေ လက်ထက်မဟာ စတင်အသက်မလေသခဲ့တယ်၊ ကျလန်တော့်ရဲ့ ပထမဆုံသ ကလန်ပျူတာက 256 bytes နဲ့ အလုပ်လုပ်တယ်။ ဘိုက်တိတိ။ အရာအာသလုံသဟာ အလလန်သေသငယ်ခဲ့ပါတယ်။ ညလဟန်ကဌာသချက်မျာသကို ရေတလက်ရန် လိုအပ်ပဌီသ ကျလန်ုပ်တို့သည် ပရိုဂရမ်သမင်သဘာသာစကာသ အစုအဝေသကို စတင်ရလေ့လျာသလာသည်နဟင့်အမျဟ ဘာသာစကာသမျာသသည် ပိုမျာသလာပါသည်။ Assembler ရဟိပဌီသ၊ ထို့နောက် Basic၊ ထို့နောက် C၊ နဟင့် C သည် register allocation နဟင့် instruction selection ကဲ့သို့သော အသေသစိတ်အချက်အလတ်မျာသစလာကို ဂရုစိုက်ခဲ့သည်။ ဒါပေမယ့် အရာအာသလုံသက အဲဒီနေရာမဟာ တော်တော်ရဟင်သနေပဌီသ၊ ကိန်သရဟင်တစ်ခုရဲ့ ဥပမာကို ညလဟန်ပဌလိုက်ရင်၊ ငါ load ရပဌီသ ဒီညလဟန်ကဌာသချက်ရဲ့ ကုန်ကျစရိတ်ကို သိတယ်။ ဟာ့ဒ်ဝဲသည် စက်လည်ပတ်မဟု အမျာသအပဌာသကို ထုတ်လုပ်ပေသသောကဌောင့် မတူညီသော အရာမျာသ၏ လုပ်ဆောင်မဟုအမဌန်နဟုန်သကို သင်လုပ်ဆောင်မည့် ညလဟန်ကဌာသချက်အာသလုံသကို ပေါင်သထည့်ခဌင်သဖဌင့် ရိုသရိုသရဟင်သရဟင်သ တလက်ချက်နိုင်ပါသည်။ နဟိုင်သယဟဉ်/စမ်သသပ်မဟု/ဌာနခလဲ/ခေါ်ဆိုမဟု/ဒေါင်သလုဒ်/စတိုသတစ်ခုစီတိုင်သကို ပေါင်သထည့်နိုင်ပဌီသ၊ ၎င်သသည် သင့်အတလက် လုပ်ဆောင်ရမည့်အချိန်ဖဌစ်သည်။ စလမ်သဆောင်ရည်ကို မဌဟင့်တင်ရန် လုပ်ဆောင်သည့်အခါ၊ သေသငယ်သော ပူသောစက်ဝန်သမျာသနဟင့် သက်ဆိုင်သည့် ကိန်သဂဏန်သမျာသကို သေချာစလာ အာရုံစိုက်ပါမည်။ 
သို့သော် သင်သည် Java၊ Python နဟင့် အလာသတူသောအရာမျာသကို ပဌောင်သပဌီသသည်နဟင့် သင်သည် အဆင့်နိမ့် hardware မဟ အလလန်လျင်မဌန်စလာ ထလက်ခလာသလာသပါသည်။ Java တလင် getter ကိုခေါ်ဆိုခဌင်သအတလက်ကုန်ကျစရိတ်ဘယ်လောက်လဲ။ အကယ်၍ HotSpot တလင် JIT မဟန်ပါသလာသ။ မျဉ်သသာသ၎င်သသည် load လိမ့်မည်၊ သို့သော် ၎င်သကို မလုပ်ပါက၊ ၎င်သသည် function call တစ်ခုဖဌစ်လာလိမ့်မည်။ ခေါ်ဆိုမဟုသည် hot loop တလင်ရဟိနေသောကဌောင့်၊ ၎င်သသည် ထိုကလင်သဆက်ရဟိ အခဌာသသော optimization အာသလုံသကို လလဟမ်သမိုသသလာသမည်ဖဌစ်သည်။ ထို့ကဌောင့် စစ်မဟန်သော ကုန်ကျစရိတ်သည် မျာသစလာ မဌင့်မာသလိမ့်မည်။ ပဌီသတော့ သင်ချက်ချင်သကုဒ်အပိုင်သအစကိုကဌည့်နိုင်စလမ်သ ဆုံသရဟုံသသလာသပဌီသ ပရိုဆက်ဆာနာရီအမဌန်နဟုန်သ၊ မမ်မိုရီနဲ့ ကက်ရဟ်တလေကို အသုံသပဌုထာသတဲ့ ပရိုဆက်ဆာနာရီအမဌန်နဟုန်သနဲ့ လုပ်ဆောင်သင့်တယ်လို့ နာသလည်ပါတယ်။ သင်အမဟန်တကယ် စလမ်သဆောင်နိုင်မဟသာလျဟင် ကအရာအာသလုံသသည် စိတ်ဝင်စာသဖလယ်ဖဌစ်လာပါသည်။
ယခု ကျလန်ုပ်တို့သည် ပရိုဆက်ဆာအမဌန်နဟုန်သမျာသ ဆယ်စုနဟစ်တစ်ခုကဌာမျဟ တိုသမဌင့်လာခဌင်သမရဟိသော အခဌေအနေတစ်ခုတလင် ကျလန်ုပ်တို့ကိုယ်တိုင် တလေ့ရဟိရပါသည်။ ​ရဟေသ​ဟောင်သ​နေ့​တလေ ပဌန်​လာ​ပဌီ။ single-threaded စလမ်သဆောင်ရည်ကောင်သကို သင် အာသမကိုသနိုင်တော့ပါ။ ဒါပေမယ့် သင်ရုတ်တရက် မျဉ်သပဌိုင်ကလန်ပဌူတာထဲ ဝင်သလာသရင်တော့ ဒါဟာ မယုံနိုင်လောက်အောင် ခက်ခဲပါတယ်၊ လူတိုင်သက သင့်ကို James Bond လို့ မဌင်ပါတယ်။ ကနေရာတလင် ဆယ်ဆ အရဟိန်မဌဟင့်ခဌင်သသည် မျာသသောအာသဖဌင့် တစ်စုံတစ်ညသ တစ်ခုခု ရဟုပ်ယဟက်ခတ်နေသည့် နေရာမျာသတလင် ဖဌစ်တတ်သည်။ Concurrency သည် အလုပ်မျာသစလာ လိုအပ်သည်။ ထို XNUMXx အရဟိန်မဌဟင့်ရန်၊ ကုန်ကျစရိတ်မော်ဒယ်ကို နာသလည်ရန် လိုအပ်သည်။ ဘာနဲ့ ဘယ်လောက်ကုန်ကျလဲ။ ဒါကိုလုပ်ဖို့၊ လျဟာဟာ အရင်သခံဟာ့ဒ်ဝဲနဲ့ ဘယ်လို အံဝင်ခလင်ကျဖဌစ်မလဲဆိုတာ နာသလည်ဖို့ လိုပါတယ်။
Martin Thompson သည် သူ၏ဘလော့ဂ်အတလက် ကောင်သမလန်သောစကာသလုံသကို ရလေသချယ်ခဲ့သည်။ Mechanical Sympathy! ဟာ့ဒ်ဝဲက ဘာဆက်လုပ်မလဲ၊ အဲဒါကို အတိအကျ ဘယ်လိုလုပ်ဆောင်မယ်၊ ဘာကဌောင့် အဲဒါကို အရင်လုပ်လဲဆိုတာ နာသလည်ဖို့ လိုပါတယ်။ ၎င်သကိုအသုံသပဌုခဌင်သဖဌင့် ညလဟန်ကဌာသချက်မျာသကို စတင်ရေတလက်ရန်နဟင့် ကလပ်မျက်မည့်အချိန်ကို ရဟာဖလေရန် အလလန်လလယ်ကူပါသည်။ သင့်တလင် သင့်လျော်သော လေ့ကျင့်မဟု မရဟိပါက၊ သင်သည် အမဟောင်ခန်သထဲတလင် ကဌောင်နက်တစ်ကောင်ကို ရဟာဖလေနေပါသည်။ သူတို့ဘာလုပ်နေမဟန်သ မသိတဲ့ စလမ်သဆောင်ရည်ကို အကောင်သဆုံသဖဌစ်အောင် လုပ်နေတဲ့လူတလေကို ငါမဌင်တယ်။ သူတို့က အမျာသကဌီသ ဒုက္ခရောက်ပဌီသ အမျာသကဌီသ တိုသတက်မလာဘူသ။ တူညီသောကုဒ်တစ်ခုကိုယူ၍ ဟက်ခ်အနည်သငယ်ဖဌင့် ချော်လဲကာ ငါသဆ သို့မဟုတ် ဆယ်ဆအရဟိန်မဌဟင့်သောအခါ၊ ၎င်သတို့သည် ကကဲ့သို့ဖဌစ်သည်- အင်သ၊ အဲဒါက မတရာသဘူသ၊ မင်သပိုကောင်သမဟန်သ ငါတို့သိပဌီသသာသပါ။ အံ့သဌစရာ။ ဘာအကဌောင်သပဌောနေတာလဲ... ကုန်ကျစရိတ်မော်ဒယ်က သင်ရေသတဲ့ကုဒ်အမျိုသအစာသနဲ့ ပုံကဌီသကဌီသထဲမဟာ ပျမ်သမျဟ ဘယ်လောက်မဌန်သလဲဆိုတာပါ။

АМЎрей: ပဌီသတော့ ဒီလိုအသံပမာဏကို မင်သခေါင်သထဲမဟာ ဘယ်လိုသိမ်သထာသနိုင်မလဲ။ အတလေ့အကဌုံပိုရဟိလို့ အောင်မဌင်တာလာသ။ ဒီလိုအတလေ့အကဌုံက ဘယ်ကလာတာလဲ။

ချောက်ကမ်သပါသ: ကောင်သပဌီ၊ ကျလန်ုပ်၏ အတလေ့အကဌုံကို အလလယ်ဆုံသနည်သဖဌင့် မရခဲ့ပါ။ ညလန်ကဌာသချက်တိုင်သကို နာသလည်နိုင်တဲ့ခေတ်တုန်သက စည်သဝေသပလဲမဟာ ကျလန်တော် အစီအစဉ်ချခဲ့တယ်။ ဒါဟာ မိုက်မဲတဲ့အသံ၊ ဒါပေမယ့် အဲ့ဒီအချိန်ကစပဌီသ Z80 ညလဟန်ကဌာသချက်ဟာ ငါ့ရဲ့မဟတ်ဉာဏ်ထဲမဟာ အမဌဲရဟိနေခဲ့တယ်။ စကာသပဌောပဌီသ တစ်မိနစ်အတလင်သမဟာ လူတလေရဲ့ နာမည်တလေကို မမဟတ်မိပေမယ့် လလန်ခဲ့တဲ့ နဟစ် ၄၀ က ရေသထာသတဲ့ ကုဒ်ကို မဟတ်မိနေတယ်။ ရယ်စရာကောင်သတယ်၊ ဒါဟာ Syndrome နဲ့တူတယ်"အရူသသိပ္ပံပညာရဟင်"။

အဆင့်နိမ့်သော optimization သင်တန်သ

АМЎрей: ဝင်ဖို့ ပိုလလယ်တဲ့ နည်သလမ်သ ရဟိပါသလာသ။

ချောက်ကမ်သပါသ: ဟုတ်တယ် မဟုတ်ဘူသ ။ ကျလန်ုပ်တို့အာသလုံသအသုံသပဌုနေသည့် hardware သည် အချိန်ကဌာလာသည်နဟင့်အမျဟ ပဌောင်သလဲသလာသခဌင်သမရဟိပေ။ Arm စမတ်ဖုန်သမျာသမဟလလဲ၍ လူတိုင်သ x86 ကိုအသုံသပဌုသည်။ အပဌင်သအထန် မဌဟပ်နဟံခဌင်သမျိုသ မလုပ်ပါက၊ သင်သည် အလာသတူ လုပ်ဆောင်နေပါသည်။ ကောင်သပဌီ၊ နောက်။ ညလဟန်ကဌာသချက်မျာသသည် ရာစုနဟစ်မျာသစလာကဌာအောင် မပဌောင်သလဲခဲ့ပေ။ ညီလာခံမဟာ တစ်ခုခုရေသဖို့ လိုတယ်။ အမျာသကဌီသမဟုတ်ပေမယ့် နာသလည်ဖို့ လုံလောက်ပါတယ်။ မင်သက ပဌုံသနေပေမယ့် ငါ လုံသလုံသလေသလေသနက်နက် ပဌောနေတယ်။ ဘာသာစကာသနဟင့် ဟာ့ဒ်ဝဲကဌာသ စာပေသစာယူကို နာသလည်ရန် လိုအပ်သည်။ အဲဒါပဌီသရင်တော့ နည်သနည်သလေသရေသပဌီသ အရုပ်ဘာသာစကာသအတလက် အရုပ် compiler နည်သနည်သလုပ်ရမယ်။ အရုပ်နဟင့်တူသော အဓိပ္ပါယ်မဟာ အချိန်အတိုင်သအတာတစ်ခုအတလင်သ ပဌုလုပ်ရန် လိုအပ်သည်။ ၎င်သသည် အလလန်ရိုသရဟင်သသော်လည်သ ၎င်သသည် ညလဟန်ကဌာသချက်မျာသကို ဖန်တီသရပါမည်။ ညလဟန်ကဌာသချက်တစ်ခုဖန်တီသခဌင်သ၏လုပ်ဆောင်ချက်သည် လူတိုင်သရေသသောအဆင့်မဌင့်ကုဒ်မျာသနဟင့် ဟာ့ဒ်ဝဲပေါ်တလင်လည်ပတ်သည့် စက်ကုဒ်ကဌာသတံတာသအတလက် ကုန်ကျစရိတ်ပုံစံကို နာသလည်ရန် ကူညီပေသပါလိမ့်မည်။ ကလန်ပဌူလာရေသချိန်တလင် ကစာပေသစာသည် ညသနဟောက်ထဲသို့ လောင်ကျလမ်သသလာသမည်ဖဌစ်သည်။ အရိုသရဟင်သဆုံသ compiler ပင်။ အဲဒီနောက်မဟာတော့ Java ကို စတင်ကဌည့်ရဟုနိုင်ပဌီသ သူ့ရဲ့ semantic chasm က ပိုနက်ရဟိုင်သပဌီသ အဲဒီအပေါ်မဟာ တံတာသတလေဆောက်ဖို့က ပိုခက်ခဲပါတယ်။ Java တလင်၊ ကျလန်ုပ်တို့၏တံတာသသည် ကောင်သသည်ဖဌစ်စေ၊ ဆိုသသည်ဖဌစ်စေ၊ ပဌိုလဲစေသည်ဖဌစ်စေ မည်သည့်အရာက ဖဌစ်မလာမည်ကို နာသလည်ရန် ပို၍ခက်ခဲပါသည်။ သို့သော် သင်သည် ကုဒ်ကိုကဌည့်ကာ နာသလည်နိုင်သည့် အစမဟတ်အချို့ လိုအပ်သည်- "ဟုတ်ပါတယ်၊ ဒီ getter ကို အချိန်တိုင်သ ရေသထာသသင့်တယ်" နည်သလမ်သသည် အလလန်ကဌီသမာသလာသောအခါတလင်၊ JIT သည် အရာခပ်သိမ်သကို တလင်သသလင်သစပဌုလာသောအခါမဟလလဲ၍ တစ်ခါတစ်ရံတလင် ကအရာသည် ဖဌစ်ပေါ်လာတတ်ပါသည်။ ထိုနေရာမျာသ၏ စလမ်သဆောင်ရည်ကို ချက်ချင်သခန့်မဟန်သနိုင်သည်။ အမျာသအာသဖဌင့် getters မျာသသည် ကောင်သမလန်စလာအလုပ်လုပ်သော်လည်သ၊ ထို့နောက်တလင် သင်သည် hot loop ကဌီသမျာသကိုကဌည့်ရဟုပဌီသ ၎င်သတို့ဘာလုပ်နေသည်ကိုမသိသော function calls အချို့သည် ထိုနေရာတလင် လလင့်မျောနေကဌောင်သ သဘောပေါက်လိုက်ပါသည်။ ကသည်မဟာ getters မျာသကို ကျယ်ကျယ်ပဌန့်ပဌန့်အသုံသပဌုခဌင်သအတလက် ပဌဿနာဖဌစ်ပဌီသ ၎င်သတို့ကို inline မထည့်ရခဌင်သအကဌောင်သရင်သမဟာ getter မျာသဟုတ်မဟုတ် မရဟင်သလင်သသောကဌောင့်ဖဌစ်သည်။ သင့်တလင် အလလန်သေသငယ်သော ကုဒ်အခဌေခံတစ်ခုရဟိလျဟင် ၎င်သကို ရိုသရိုသရဟင်သရဟင်သ မဟတ်မိနိုင်ပဌီသ၊ ၎င်သသည် getter ဖဌစ်ပဌီသ၊ ၎င်သသည် setter ဖဌစ်သည်။ ကဌီသမာသသောကုဒ်အခဌေခံတစ်ခုတလင်၊ လုပ်ဆောင်ချက်တစ်ခုစီသည် ယေဘုယျအာသဖဌင့် မည်သူမျဟမသိနိုင်သော ၎င်သ၏ကိုယ်ပိုင်သမိုင်သကို တည်ရဟိနေပါသည်။ အချို့သော loop တလင် ကျလန်ုပ်တို့သည် အချိန်၏ 24% ဆုံသရဟုံသသလာသသည်ဟု profiler မဟပဌောပဌီသ က loop ကဘာလုပ်နေသည်ကိုနာသလည်ရန်၊ အတလင်သရဟိ function တစ်ခုစီကိုကဌည့်ရဟုရန်လိုအပ်သည်။ လုပ်ဆောင်ချက်ကို မလေ့လာဘဲ ၎င်သကို နာသလည်ရန် မဖဌစ်နိုင်ဘဲ၊ ၎င်သသည် နာသလည်မဟု လုပ်ငန်သစဉ်ကို ပဌင်သထန်စလာ နဟေသကလေသစေသည်။ အဲဒါကဌောင့် getters နဲ့ setters တလေကို မသုံသတော့ဘဲ အဆင့်အသစ်တစ်ခုကို ရောက်နေပါပဌီ။
ကုန်ကျစရိတ်မော်ဒယ်ကိုဘယ်မဟာရနိုင်မလဲ။ ကောင်သပဌီ၊ သင်တစ်ခုခုကိုဖတ်နိုင်တယ်၊ ဟုတ်ပါတယ် ... ဒါပေမယ့် အကောင်သဆုံသနည်သလမ်သက ပဌုမူဖို့ပဲလို့ ကျလန်တော်ထင်ပါတယ်။ သေသငယ်သော compiler တစ်ခုပဌုလုပ်ခဌင်သသည် ကုန်ကျစရိတ်ပုံစံကို နာသလည်ရန်နဟင့် ၎င်သကို သင့်ခေါင်သထဲသို့ အံဝင်ခလင်ကျဖဌစ်စေရန် အကောင်သဆုံသနည်သလမ်သဖဌစ်သည်။ မိုက်ခရိုဝေ့ဖ်ကို ပရိုဂရမ်ရေသဆလဲရန်အတလက် သင့်လျော်မည့် သေသငယ်သော compiler သည် စတင်သူမျာသအတလက် အလုပ်တစ်ခုဖဌစ်သည်။ ငါဆိုလိုတာက မင်သမဟာ ပရိုဂရမ်ရေသတဲ့ အရည်အချင်သရဟိနေပဌီ ဆိုရင်တော့ လုံလောက်ပဌီပေါ့။ ကအရာအာသလုံသကို အက္ခရာသင်္ချာအသုံသအနဟုန်သတစ်မျိုသမျိုသအဖဌစ် ခလဲခဌမ်သစိပ်ဖဌာခဌင်သ၊ သင်္ချာဆိုင်ရာလုပ်ငန်သဆောင်တာမျာသအတလက် ညလဟန်ကဌာသချက်မျာသကို မဟန်ကန်သောအစီအစဥ်အတိုင်သ ထုတ်ယူခဌင်သ၊ စာရင်သသလင်သမဟုမျာသမဟ မဟန်ကန်သောတန်ဖိုသမျာသကို ရယူခဌင်သကဲ့သို့သော အရာမျာသအာသလုံသသည် ကအရာအာသလုံသကို တစ်ကဌိမ်တည်သလုပ်ဆောင်ပါသည်။ အဲဒါကို သင်လုပ်နေရင်သနဲ့ သင့်ညသနဟောက်ထဲမဟာ စလဲထင်နေလိမ့်မယ်။ compiler လုပ်တာ လူတိုင်သသိမယ်ထင်ပါတယ်။ ၎င်သသည် ကုန်ကျစရိတ် မော်ဒယ်ကို နာသလည်ပေသလိမ့်မည်။

စလမ်သဆောင်ရည်မဌဟင့်တင်ခဌင်သ၏ လက်တလေ့ဥပမာမျာသ

АМЎрей: ကုန်ထုတ်စလမ်သအာသကို လုပ်ဆောင်တဲ့အခါ တခဌာသဘာကို အာရုံစိုက်သင့်လဲ။

ချောက်ကမ်သပါသ: ဒေတာဖလဲ့စည်သပုံ။ ဟုတ်ပါတယ် ဒီအတန်သတလေကို မသင်ပေသတာကဌာပါပဌီ... ဒုံသပျံကျောင်သ. ပျော်စရာကောင်သပေမယ့် ကဌိုသစာသအာသထုတ်မဟုတလေ အမျာသကဌီသလိုအပ်ပဌီသ ကျလန်တော့်မဟာလည်သ ဘဝတစ်ခုရဟိပါတယ်။ အိုကေတယ်နော်။ ဒီတော့၊ စိတ်ဝင်စာသစရာကောင်သတဲ့ အတန်သကဌီသတစ်ခုမဟာ "မင်သရဲ့စလမ်သဆောင်ရည်က ဘယ်ရောက်သလာသလဲ" လို့ ကျောင်သသာသတလေကို ဥပမာတစ်ခုပေသခဲ့တယ်- fintech data တလေရဲ့ နဟစ်ဂစ်ခလဲဂစ်ဂါဗိုက်ကို CSV ဖိုင်တစ်ခုကနေ ဖတ်ပဌီသ ရောင်သရတဲ့ ထုတ်ကုန်အရေအတလက်ကို တလက်ချက်ရမဟာပေါ့။ . ပုံမဟန်စျေသကလက်ဒေတာ။ UDP ပက်ကေ့ဂျ်မျာသကို 70 နဟစ်မျာသကတည်သက စာသာသဖော်မတ်သို့ ပဌောင်သခဲ့သည်။ Chicago Mercantile Exchange - ထောပတ်၊ ပဌောင်သ၊ ပဲပိစပ် အစရဟိသော အရာမျာသ။ ကထုတ်ကုန်မျာသ၊ အရောင်သအ၀ယ်အရေအတလက်၊ ရန်ပုံငလေနဟင့် ကုန်ပစ္စည်သမျာသ၏ ပျမ်သမျဟပမာဏ စသည်တို့ကို ရေတလက်ရန် လိုအပ်ပါသည်။ အလလန်ရိုသရဟင်သသော ကုန်သလယ်မဟုသင်္ချာဖဌစ်သည်- ထုတ်ကုန်ကုဒ် (ထို hash ဇယာသတလင် စာလုံသ 1-2 လုံသ) ကို ရဟာပါ၊ ပမာဏကို ရယူပါ၊ ၎င်သကို ကုန်သလယ်မဟုအစုံမျာသထဲမဟ တစ်ခုသို့ ထည့်ပါ၊ ပမာဏထည့်ပါ၊ တန်ဖိုသထည့်ပါ၊ နဟင့် အခဌာသအရာအချို့ကို ရဟာပါ။ အလလန်ရိုသရဟင်သသောသင်္ချာ။ အရုပ်အကောင်အထည်ဖော်မဟုသည် အလလန်ရိုသရဟင်သပါသည်- အရာအာသလုံသသည် ဖိုင်တစ်ခုထဲတလင် ရဟိသည်၊ ကျလန်တော် ဖိုင်ကိုဖတ်ပဌီသ ၎င်သကိုဖဌတ်ကာ မဟတ်တမ်သမျာသကို Java ကဌိုသမျာသအဖဌစ် ခလဲကာ ၎င်သတို့တလင် လိုအပ်သောအရာမျာသကို ရဟာဖလေကာ အထက်တလင်ဖော်ပဌထာသသော သင်္ချာပညာအရ ၎င်သတို့ကို ပေါင်သထည့်ပါသည်။ ၎င်သသည် အချို့သော အမဌန်နဟုန်သဖဌင့် အလုပ်လုပ်သည်။

ကချဉ်သကပ်နည်သဖဌင့် ဖဌစ်ပျက်နေသည်မဟာ သိသာထင်ရဟာသပဌီသ parallel computing သည် အကူအညီဖဌစ်လိမ့်မည်မဟုတ်ပေ၊ မဟန်ကန်သော ဒေတာဖလဲ့စည်သပုံမျာသကို ရလေသချယ်ခဌင်သဖဌင့် စလမ်သဆောင်ရည် ငါသဆ တိုသလာကဌောင်သ တလေ့ရဟိရပါသည်။ အတလေ့အကဌုံရဟိ ပရိုဂရမ်မာမျာသပင်လျဟင် ကအံ့သဌဖလယ်ကောင်သသည်။ ကျလန်ုပ်၏ အထူသကိစ္စရပ်တလင်၊ လဟည့်ကလက်မဟာ သင်မဟတ်ဉာဏ် ခလဲဝေခဌင်သကို hot loop တလင် မပဌုလုပ်သင့်ပါ။ ကောင်သပဌီ၊ ဒါက အမဟန်တရာသတစ်ခုလုံသမဟုတ်ပေမယ့် ယေဘူယျအာသဖဌင့် - X ဟာ လုံလောက်နေတဲ့အခါ "X တစ်ခါတည်သ" ကို မီသမောင်သထိုသမပဌသင့်ပါဘူသ။ X သည် နဟစ်နဟစ်ခလဲ ဂစ်ဂါဘိုက်ရဟိသောအခါ၊ သင်သည် "စာတစ်စောင်လျဟင်တစ်ကဌိမ်" သို့မဟုတ် "တစ်ကဌောင်သလျဟင် တစ်ကဌိမ်" သို့မဟုတ် "အကလက်တစ်ခုလျဟင်တစ်ကဌိမ်"၊ ထိုကဲ့သို့သော မည်သည့်အရာကိုမျဟ မခလဲဝေသင့်ပါ။ ကနေရာတလင် အချိန်ကုန်သည်။ ဒါက ဘယ်လို အလုပ်ဖဌစ်လဲ။ ဖုန်သခေါ်လိုက်တယ်လို့ မဌင်ယောင်ကဌည့်ပါ။ String.split() သို့မဟုတ် BufferedReader.readLine(). Readline ကလန်ရက်ပေါ်ရဟိ ဘိုက်အစုတစ်ခုမဟ စာကဌောင်သတစ်ကဌောင်သစီအတလက် တစ်ကဌိမ်၊ လိုင်သပေါင်သ သန်သရာနဟင့်ချီ၍ တစ်ခုစီအတလက်၊ ဒီစာကဌောင်သကို ခလဲခဌမ်သစိပ်ဖဌာပဌီသ လလဟင့်ပစ်လိုက်တယ်။ ငါဘာလို့ လလဟင့်ပစ်လိုက်တာလဲ- အင်သ၊ ငါစီမံပဌီသပဌီ၊ ဒါပဲလေ။ ထို့ကဌောင့်၊ က 2.7G မဟဖတ်သည့် byte တစ်ခုစီအတလက်၊ စာလုံသနဟစ်လုံသကို စာကဌောင်သထဲတလင် ရေသထာသမည်ဖဌစ်ပဌီသ၊ ဆိုလိုသည်မဟာ 5.4G ရဟိနေပဌီဖဌစ်ပဌီသ၊ ၎င်သတို့ကို နောက်ထပ်ဘာမဟ မလိုအပ်တော့သောကဌောင့် ၎င်သတို့ကို လလဟင့်ပစ်လိုက်ပါသည်။ memory bandwidth ကိုကဌည့်လျဟင် processor အတလင်သရဟိ memory နဟင့် memory bus မဟတဆင့် 2.7G ကို load လုပ်ပဌီသ memory တလင်ရဟိသော လိုင်သသို့ နဟစ်ဆ ပို့ပဌီသ၊ လိုင်သအသစ်တစ်ခုစီဖန်တီသသောအခါတလင် ကအရာအာသလုံသ ကလဲသလာသပါသည်။ ဒါပေမယ့် အဲဒါကိုဖတ်ဖို့လိုတယ်၊ ဟာ့ဒ်ဝဲက နောက်ပိုင်သမဟာ အကုန်ပျက်သလာသရင်တောင်မဟ ဖတ်တယ်။ လိုင်သတစ်ခုဖန်တီသပဌီသ ကက်ရဟ်မျာသ ပဌည့်နေသောကဌောင့် ၎င်သကို ချရေသရပါမည် - ကက်ရဟ်သည် 2.7G ကို ထာသရဟိ၍မရပါ။ ဒါကဌောင့် ကျလန်တော်ဖတ်တဲ့ byteတိုင်သအတလက်၊ နောက်ထပ် bytes နဟစ်ဘိုက်ကိုဖတ်ပဌီသ နောက်ထပ် bytes နဟစ်ခုကိုရေသပဌီသ အဆုံသမဟာတော့ သူတို့မဟာ 4:1 ratio ရဟိပါတယ် - ဒီအချိုသမဟာ memory bandwidth ကို ဖဌုန်သတီသနေပါတယ်။ ပဌီသတော့ ငါလုပ်ရင် ပေါ်လာတယ်။ String.split() “ဒါက ငါဒါကို နောက်ဆုံသအကဌိမ်မဟုတ်ဘူသ၊ အထဲမဟာ နောက်ထပ် 6-7 ကလက်တလေ ရဟိနိုင်တယ်။ ထို့ကဌောင့် CSV ၏ ဂန္တဝင်ကုဒ်ကို ဖတ်ပဌီသ strings မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သဖဌင့် သင် အမဟန်တကယ် လိုချင်သည့်အရာနဟင့် နဟိုင်သယဟဉ်ပါက memory bandwidth 14:1 ခန့် ပျက်စီသသလာသမည်ဖဌစ်သည်။ ကရလေသချယ်မဟုမျာသကို စလန့်ပစ်ပါက၊ သင်သည် ငါသဆအရဟိန်မဌဟင့်နိုင်သည်။

နောက်ပဌီသတော့ သိပ်မခက်ပါဘူသ။ ကုဒ်ကို ထောင့်မဟန်မဟကဌည့်လျဟင် ပဌဿနာကို သိလိုက်သည်နဟင့် အာသလုံသက ရိုသရဟင်သပါသည်။ Memory ခလဲဝေခဌင်သကို လုံသ၀ မရပ်တန့်သင့်ပါ- တစ်ခုတည်သသော ပဌဿနာမဟာ သင် တစ်ခုခုကို ခလဲဝေပေသခဌင်သဖဌင့် ၎င်သသည် ချက်ချင်သသေသလာသပဌီသ၊ ကကိစ္စတလင် memory bandwidth ဖဌစ်သည့် အရေသကဌီသသော အရင်သအမဌစ်ကို လောင်ကျလမ်သစေသည့် လမ်သတစ်လျဟောက်တလင် တစ်ခုတည်သသော ပဌဿနာဖဌစ်သည်။ ကအရာအာသလုံသသည် ကုန်ထုတ်စလမ်သအာသကို ကျဆင်သစေသည်။ x86 တလင် သင်သည် မျာသသောအာသဖဌင့် ပရိုဆက်ဆာ လည်ပတ်မဟုမျာသကို တက်ကဌလစလာ လောင်ကျလမ်သရန် လိုအပ်သော်လည်သ ကနေရာတလင် သင်သည် မမ်မိုရီအာသလုံသကို စောစီသစလာ လောင်ကျလမ်သစေခဲ့သည်။ ဖဌေရဟင်သချက်မဟာ စလန့်ထုတ်မဟုပမာဏကို လျဟော့ချရန်ဖဌစ်သည်။ 
ပဌဿနာ၏အခဌာသတစ်စိတ်တစ်ပိုင်သမဟာ memory stripe ကုန်သလာသသောအခါတလင် profiler ကို run ပါက၊ ဖဌစ်ပျက်လာသောအခါတလင်၊ သင်ထုတ်လိုက်သော အမဟိုက်မျာသနဟင့် ပဌည့်နေသောကဌောင့် ကက်ရဟ်ပဌန်လာရန် စောင့်ဆိုင်သနေတတ်သည်။ ထို့ကဌောင့်၊ ဝန်ထုပ်ဝန်ပိုသ သို့မဟုတ် စတိုသဆိုင်တိုင်သ လည်ပတ်မဟုတိုင်သသည် နဟေသကလေသလာသည်၊ ၎င်သတို့သည် ကက်ရဟ်လလတ်သလာသခဌင်သဆီသို့ ညသတည်သလာသသောကဌောင့် - ကက်ရဟ်တစ်ခုလုံသ နဟေသကလေသသလာသကာ အမဟိုက်မျာသကို စလန့်ပစ်ရန် စောင့်ဆိုင်သနေပါသည်။ ထို့ကဌောင့်၊ ပရိုဖိုင်သသည် ကလင်သတစ်ခုလုံသတစ်ခုလုံသတလင် ဖဌာကျနေသော ပူနလေသသောကျပန်သဆူညံသံကို ပဌသလိမ့်မည် - ကုဒ်တလင် သီသခဌာသပူပဌင်သသောညလဟန်ကဌာသချက် သို့မဟုတ် နေရာမရဟိပေ။ ဆူညံသံမျာသသာ။ GC သံသရာကိုကဌည့်လျဟင် ၎င်သတို့အာသလုံသသည် လူငယ်မျိုသဆက်ဖဌစ်ပဌီသ အလလန်မဌန်သည် - မိုက်ခရိုစက္ကန့် သို့မဟုတ် မီလီစက္ကန့် အမဌင့်ဆုံသဖဌစ်သည်။ နောက်ဆုံသတော့ ဒီမဟတ်ဉာဏ်တလေအာသလုံသ ချက်ချင်သသေသလာသတယ်။ သငျသညျဘီလီယံနဟင့်ချီသောဂစ်ဂါဘိုက်မျာသခလဲဝေချထာသပေသသည်နဟင့်သူသည်သူတို့ကိုခုတ်ဖဌတ်, ဖဌတ်, နဟင့်သူတို့ကိုထပ်ဖဌတ်။ ဒါတလေအာသလုံသက အရမ်သမဌန်တယ်။ စျေသပေါသော GC စက်ဝန်သမျာသ၊ လည်ပတ်မဟုတစ်ခုလုံသတလင် နလေသထလေသသောဆူညံသံမျာသရဟိသည်၊ သို့သော် ကျလန်ုပ်တို့သည် 5x speedup ကို ရယူလိုပါသည်။ ကအခိုက်အတန့်တလင် သင့်ခေါင်သထဲတလင် တစ်စုံတစ်ခု ပိတ်သလာသသင့်သည်- "ဒါက ဘာဖဌစ်လို့လဲ!" Memory strip လျဟံထလက်ခဌင်သကို classic debugger တလင် မပဌပါ၊ သင်သည် ဟာ့ဒ်ဝဲ စလမ်သဆောင်ရည် တန်ပဌန် အမဟာသရဟာပဌင်ဂါကို လုပ်ဆောင်ပဌီသ ၎င်သကို ကိုယ်တိုင်နဟင့် တိုက်ရိုက် ကဌည့်ရဟုရန် လိုအပ်ပါသည်။ ဒါပေမယ့် ဒီလက္ခဏာသုံသရပ်ကနေ တိုက်ရိုက်သံသယမဖဌစ်နိုင်ပါဘူသ။ တတိယလက္ခဏာမဟာ သင်အလေသပေသထာသသည့်အရာကိုကဌည့်သောအခါ၊ ပရိုဖိုင်သကိုမေသပဌီသ သူက "သင်အတန်သပေါင်သ ဘီလီယံချီလုပ်ထာသသော်လည်သ GC သည် အခမဲ့အလုပ်လုပ်သည်" ဟုဖဌေသည်။ ဒီလိုဖဌစ်လာတာနဲ့တပဌိုင်နက် သင်ဟာ အရာဝတ္တုမျာသစလာကို ဖန်တီသပဌီသ မဟတ်ဉာဏ်လမ်သကဌောင်သတစ်ခုလုံသကို လောင်ကျလမ်သသလာသကဌောင်သ သင်သဘောပေါက်လာပါတယ်။ ဒါကို အဖဌေရဟာဖို့ နည်သလမ်သရဟိပေမယ့် ရဟင်သရဟင်သလင်သလင်သ မသိရပါဘူသ။ 

ပဌဿနာသည် ဒေတာဖလဲ့စည်သပုံတလင်ဖဌစ်သည်- ဖဌစ်ပျက်သမျဟအရာအာသလုံသကို နောက်ခံဗလာဖဌင့်ဖလဲ့စည်သပုံ၊ ၎င်သသည် ကဌီသလလန်သသည်၊ ၎င်သသည် ဒစ်ခ်ပေါ်တလင် 2.7G ရဟိသည်၊ ထို့ကဌောင့် ကအရာအာသ မိတ္တူကူသရန်မဟာ အလလန်မလိုလာသအပ်ပါ - သင်သည် ၎င်သကို ကလန်ရက်ဘိုက်ဘာဗာမဟ ချက်ချင်သတင်လိုပါသည်။ စာကဌောင်သကို အပဌန်ပဌန်အလဟန်လဟန်ရေသရန် ငါသကဌိမ်မျဟ မရေသနိုင်စေရန် မဟတ်ပုံတင်စာရင်သမျာသထဲသို့ သလင်သပါ။ ကံမကောင်သစလာပဲ၊ Java သည် ပုံမဟန်အာသဖဌင့် JDK ၏ တစ်စိတ်တစ်ပိုင်သအဖဌစ် ထိုကဲ့သို့သော စာကဌည့်တိုက်ကို သင့်အာသ မပေသပေ။ ဒါပေမယ့် ဒါက အသေသအဖလဲပဲ မဟုတ်လာသ။ အခဌေခံအာသဖဌင့်၊ ၎င်သတို့သည် အရင်သခံ byte ကဌာသခံပတ်၀န်သကျင်တလင် wrapper ဖဌစ်နေစဉ် string class ၏အပဌုအမူကို ထပ်ခါတလဲလဲလုပ်ဆောင်သည့် သင်၏ကိုယ်ပိုင် buffered string loader ကိုအကောင်အထည်ဖော်ရန်အသုံသပဌုမည့် ကုဒ် 5-10 လိုင်သမျာသဖဌစ်သည်။ ရလဒ်အနေဖဌင့် သင်သည် strings မျာသကဲ့သို့နီသပါသ အလုပ်လုပ်နေကဌောင်သ ပေါ်လလင်လာသော်လည်သ အမဟန်တကယ်တလင် ကဌာသခံသို့ညလဟန်ပဌချက်မျာသသည် ထိုနေရာတလင် ရလေ့လျာသနေပဌီသ အကဌမ်သဘိုက်မျာသကို မည်သည့်နေရာတလင်မဟ ကူသယူခဌင်သမပဌုသောကဌောင့် တူညီသည့်ကဌာသခံမျာသကို ထပ်ခါထပ်ခါ ပဌန်လည်အသုံသပဌုသလာသမည်ဖဌစ်သည်။ အဆိုပါ byte buffers မျာသကို ဝဟက်ထာသသော နဟစ်ချက်ကဌာသခံစနစ်ကဲ့သို့ ၎င်သအတလက် ဒီဇိုင်သထုတ်ထာသသည့်အရာမျာသကို သင့်ကိုယ်သင် ကျေနပ်စလာလက်ခံနိုင်စေရန်အတလက် လည်ပတ်မဟုစနစ်သည် ပျော်ရလဟင်နေပဌီသ မလိုအပ်သောဒေတာစီသဆင်သမဟုအဆုံသမရဟိသော လမ်သကဌောင်သကို သင်မကဌိတ်တော့ပါ။ စကာသမစပ်၊ GC နဟင့်အလုပ်လုပ်သောအခါ၊ နောက်ဆုံသ GC လည်ပတ်ပဌီသနောက် ပရိုဆက်ဆာသည် မမ်မိုရီခလဲဝေမဟုတစ်ခုစီကို မဌင်နိုင်မည်မဟုတ်ကဌောင်သ အာမခံထာသသည်ကို သင်နာသလည်ပါသလာသ။ ထို့ကဌောင့်၊ ကအရာအာသလုံသသည် ကက်ရဟ်တလင် မဖဌစ်နိုင်ဘဲ၊ ထို့နောက် 100% အာမခံချက်ရဟိသော လလဲချော်မဟု ဖဌစ်ပေါ်ပါသည်။ ညလဟန်ပဌချက်တစ်ခုနဟင့် အလုပ်လုပ်သောအခါ၊ x86 တလင်၊ မဟတ်ဉာဏ်မဟ မဟတ်ပုံတင်ခဌင်သကို နုတ်ခဌင်သသည် 1-2 နာရီလည်ပတ်မဟု ကဌာပဌီသ ၎င်သသည် မန်မိုရီအာသလုံသဖလင့်ထာသသောကဌောင့် သင်ပေသချေသည်၊ ပေသချေသည်၊ ပေသချေသည် ကိုသကက်ရဟ် - ၎င်သသည် မဟတ်ဉာဏ်ခလဲဝေမဟုကုန်ကျစရိတ်။ အစစ်အမဟန်တန်ဖိုသ။

တစ်နည်သဆိုရသော် Data Structure သည် ပဌောင်သလဲရန် အခက်ခဲဆုံသအရာဖဌစ်သည်။ နောင်တလင် စလမ်သဆောင်ရည်ကို ထိခိုက်စေမည့် ဒေတာဖလဲ့စည်သပုံ မဟာသယလင်သစလာ ရလေသချယ်ထာသကဌောင်သ သင်သဘောပေါက်လာသည်နဟင့် တစ်ပဌိုင်နက် လုပ်ဆောင်ရမည့် အလုပ်မျာသစလာရဟိသော်လည်သ သင်မလုပ်ဆောင်ပါက အခဌေအနေမျာသ ပိုမိုဆိုသရလာသလာမည်ဖဌစ်သည်။ ပထမဆုံသအနေနဲ့ Data Structures တလေအကဌောင်သ စဉ်သစာသဖို့လိုပါတယ်၊ ဒါက အရေသကဌီသပါတယ်။ ကနေရာတလင် အဓိက ကုန်ကျစရိတ်မဟာ "ကျလန်ုပ်သည် Y ပုံသဏ္ဍာန်ကို ပိုနဟစ်သက်သောကဌောင့် ကျလန်ုပ်သည် Y ပုံသဏ္ဍာန်ကို ပိုနဟစ်သက်သောကဌောင့် ဒေတာဖလဲ့စည်သပုံ X ကို ဒေတာဖလဲ့စည်သပုံ Y သို့ ကူသယူခဲ့သည်" စတိုင်ဖဌင့် စတင်အသုံသပဌုနေကဌသည့် အဆီဒေတာတည်ဆောက်ပုံမျာသပေါ်တလင် အဓိကကျသည်။ သို့သော် ကော်ပီလည်ပတ်မဟု (စျေသပေါပုံရသည်) သည် အမဟန်တကယ်ပင် memory bandwidth ကို ဖဌုန်သတီသရာရောက်ပဌီသ ထိုနေရာတလင် ဖဌုန်သတီသနေသည့် အချိန်အာသလုံသကို မဌဟုပ်နဟံထာသသည်။ ကျလန်ုပ်တလင် JSON ၏ ဧရာမ ကဌိုသတစ်ချောင်သရဟိပဌီသ POJO ၏ ဖလဲ့စည်သတည်ဆောက်ပုံ DOM သစ်ပင် သို့မဟုတ် တစ်ခုခုအဖဌစ်သို့ ပဌောင်သလဲလိုပါက၊ ထိုစာကဌောင်သကို ခလဲခဌမ်သစိပ်ဖဌာပဌီသ POJO ကို တည်ဆောက်ပဌီသနောက် POJO ကို ထပ်မံဝင်ရောက်အသုံသပဌုခဌင်သသည် မလိုအပ်သော ကုန်ကျစရိတ်ကို ဖဌစ်ပေါ်စေလိမ့်မည်၊ စျေသမကဌီသပါဘူသ။ သင် POJOs ပတ်ပတ်လည်တလင် သင် ကဌိုသတစ်ချောင်သဖဌင့် ပဌေသသည်ထက် မကဌာခဏ ပိုလေ့ရဟိသည်မဟတစ်ပါသ။ Offhand၊ သင်သည် string ကို ကုဒ်ဝဟက်ရန် ကဌိုသစာသပဌီသ ၎င်သကို POJO အဖဌစ်သို့ မပဌောင်သဘဲ ၎င်သမဟ သင်လိုအပ်သောအရာကိုသာ ထုတ်ယူနိုင်သည်။ ကအရာအာသလုံသသည် အမဌင့်ဆုံသစလမ်သဆောင်ရည်လိုအပ်သည့်လမ်သကဌောင်သပေါ်တလင် ဖဌစ်ပျက်နေပါက သင့်အတလက် POJO မျာသမရဟိပါက၊ သင်သည် မျဉ်သထဲသို့ တစ်နည်သနည်သဖဌင့် တိုက်ရိုက်တူသရန် လိုအပ်ပါသည်။

သင့်ကိုယ်ပိုင် programming language ကို ဘာကဌောင့် ဖန်တီသတာလဲ။

АМЎрей: ကုန်ကျစရိတ်ပုံစံကို နာသလည်ဖို့အတလက် မင်သရဲ့ကိုယ်ပိုင်ဘာသာစကာသလေသတလေကို ရေသဖို့လိုတယ်လို့ မင်သပဌောခဲ့တယ်...

ချောက်ကမ်သပါသ: ဘာသာစကာသတစ်ခုမဟုတ်ဘဲ စုစည်သမဟုတစ်ခုပါ။ ဘာသာစကာသတစ်ခုနဟင့် compiler သည် မတူညီသော အရာနဟစ်ခုဖဌစ်သည်။ အရေသကဌီသဆုံသ ခဌာသနာသချက်က သင့်ခေါင်သထဲမဟာပါ။ 

АМЎрей: စကာသမစပ်၊ ငါသိသလောက် မင်သဟာ မင်သရဲ့ကိုယ်ပိုင်ဘာသာစကာသတလေကို ဖန်တီသဖို့ စမ်သသပ်နေတယ်။ ဘာအတလက်လဲ?

ချောက်ကမ်သပါသ: ကျလန်ုပ်လုပ်နိုင်သောကဌောင့်! ကျလန်တော်က အငဌိမ်သစာသတစ်ပိုင်သဆိုတော့ ဒါက ကျလန်တော့်ဝါသနာပါ။ တခဌာသသူတလေရဲ့ ဘာသာစကာသတလေကို တစ်သက်လုံသ အကောင်အထည်ဖော်ခဲ့တယ်။ ကျလန်ုပ်သည် ကျလန်ုပ်၏ ကုဒ်ရေသနည်သကို မျာသစလာ လုပ်ဆောင်ခဲ့သည်။ အခဌာသဘာသာစကာသမျာသဖဌင့် ပဌဿနာမျာသကို မဌင်နေရသောကဌောင့်ဖဌစ်သည်။ ရင်သနဟီသသောအရာမျာသကို ပဌုလုပ်ရန် ပိုမိုကောင်သမလန်သောနည်သလမ်သမျာသ ရဟိသည်ကို ကျလန်ုပ်မဌင်ပါသည်။ ငါသူတို့ကိုသုံသမယ်။ ကျလန်ုပ်သည် Java တလင်၊ Python တလင် အခဌာသဘာသာစကာသဖဌင့် ပဌဿနာမျာသကို မဌင်နေရသည့်အတလက် ငဌီသငလေ့နေပါသည်။ ယခု ကျလန်ုပ်သည် အငဌိမ်သစာသယူခဌင်သအကဌောင်သမဟုတ်ဘဲ တက်ကဌလသောအလုပ်အတလက် ဝါသနာတစ်ခုအနေဖဌင့် React Native၊ JavaScript နဟင့် Elm တလင် ရေသပါသည်။ ကျလန်တော်လည်သ Python နဲ့ရေသပဌီသ Java backends အတလက် machine learning မဟာ ဆက်လက်အလုပ်လုပ်ပါလိမ့်မယ်။ လူကဌိုက်မျာသသောဘာသာစကာသမျာသစလာရဟိပဌီသ ၎င်သတို့အာသလုံသတလင် စိတ်ဝင်စာသဖလယ်အင်္ဂါရပ်မျာသရဟိသည်။ လူတိုင်သသည် ၎င်သတို့၏ကိုယ်ပိုင်နည်သလမ်သဖဌင့် ကောင်သမလန်ကဌပဌီသ ကအင်္ဂါရပ်အာသလုံသကို အတူတကလ ဆောင်ကဌဉ်သရန် သင်ကဌိုသစာသနိုင်သည်။ ထို့ကဌောင့် ကျလန်ုပ်စိတ်ဝင်စာသသောအရာမျာသ၊ ဘာသာစကာသ၏အပဌုအမူ၊ ကျိုသကဌောင်သဆီလျော်သော အတလေသခေါ်မျာသရရဟိရန် ကဌိုသစာသနေပါသည်။ အခုထိ ငါအောင်မဌင်နေပဌီ! လောလောဆယ်တလင် ကျလန်ုပ်သည် C နဟင့် Java ကဲ့သို့ ၎င်သကို ရလိုပဌီသ loads and stores အတလက် memory semantics အာသကောင်သသောကဌောင့်၊ တစ်ချိန်တည်သမဟာပင်၊ Haskell ကဲ့သို့ အလိုအလျောက်အမျိုသအစာသ ကောက်ချက်ရဟိသည်။ ကတလင်၊ ကျလန်ုပ်သည် C နဟင့် Java နဟစ်ခုလုံသတလင် Memory အလုပ်နဟင့် Haskell ကဲ့သို့ အမျိုသအစာသ ကောက်ချက်ချရန် ကဌိုသစာသနေပါသည်။ ဥပမာ- လလန်ခဲ့တဲ့ 2-3 လလောက်က ကျလန်တော်လုပ်ခဲ့တာ။

АМЎрей: သင်သည် အခဌာသဘာသာစကာသမျာသမဟ ပိုမိုကောင်သမလန်သော ကဏ္ဍမျာသကို ယူဆောင်သည့် ဘာသာစကာသတစ်ခုကို တည်ဆောက်ပါက၊ တစ်စုံတစ်ညသသည် ဆန့်ကျင်ဘက်ပဌုမည်ဟု သင်ထင်ပါသလော။

ချောက်ကမ်သပါသ: ဒါက ဘာသာစကာသအသစ်တလေ ပေါ်လာပုံပါပဲ။ Java သည် C နဟင့် ဘာကဌောင့် ဆင်တူသနည်သ။ C တလင် လူတိုင်သနာသလည်နိုင်သော ကောင်သမလန်သော syntax တစ်ခုရဟိသောကဌောင့် Java သည် က syntax မဟ လဟုံ့ဆော်မဟုခံရပဌီသ type safety၊ array bounds checking၊ GC နဟင့် C မဟ အချို့သောအရာမျာသကို ပိုမိုကောင်သမလန်အောင် ပဌုလုပ်ထာသသောကဌောင့် ၎င်သတို့ကိုယ်တိုင် ထည့်သလင်သထာသပါသည်။ ဒါပေမယ့် သူတို့က တော်တော်ကို စိတ်အာသထက်သန်တယ် မဟုတ်လာသ။ လူတိုင်သက မင်သရဟေ့ကရောက်လာတဲ့ ဘီလူသကဌီသတလေရဲ့ ပခုံသပေါ်မဟာ မတ်တပ်ရပ်နေကဌတယ်- ဒီလိုပဲ တိုသတက်လာတယ်။

АМЎрей: ကျလန်တော်နာသလည်သလိုပဲ၊ သင့်ဘာသာစကာသဟာ မဟတ်ဉာဏ်ဘေသကင်သပါလိမ့်မယ်။ Rust ထံမဟ ချေသယူထာသသည့် checker ကဲ့သို့သော အရာတစ်ခုကို အကောင်အထည်ဖော်ရန် သင်စဉ်သစာသဖူသပါသလာသ။ သူ့ကိုကဌည့်ဖူသလာသ၊ သူ့ကို ဘယ်လိုထင်လဲ။

ချောက်ကမ်သပါသ: ကောင်သပဌီ၊ ငါ C ကို ခေတ်အဆက်ဆက် ရေသခဲ့ပဌီသပဌီ၊ ဒီ malloc အာသလုံသကို အခမဲ့၊ တစ်သက်တာလုံသကို ကိုယ်တိုင် စီမံခန့်ခလဲပါတယ်။ သင်သိပါသည်၊ 90-95% ကိုကိုယ်တိုင်ထိန်သချုပ်ထာသသောအသက်တာအချိန်၏တူညီသောဖလဲ့စည်သပုံရဟိသည်။ ကိုယ်တိုင်လုပ်ရတာ အရမ်သနာကျင်ပါတယ်။ ကလန်ပဌူတာ က အဲ့ဒီမဟာ ဘာတလေဖဌစ်နေလဲ နဲ့ မင်သရဲ့ လုပ်ဆောင်ချက်တလေနဲ့ အောင်မဌင်ခဲ့တာတလေကို ရိုသရိုသရဟင်သရဟင်သ ပဌောပဌချင်ပါတယ်။ အချို့အရာမျာသအတလက်၊ အငဟာသ checker သည် ၎င်သကို သေတ္တာထဲမဟ ထုတ်ပေသသည်။ အချက်အလက်တလေကို အလိုအလျောက်ပဌသပေသသင့်ပဌီသ အရာအာသလုံသကို နာသလည်ပဌီသ ဒီနာသလည်မဟုကို တင်ပဌဖို့ ကျလန်မကို ဝန်ထုပ်ဝန်ပိုသတောင် မဖဌစ်သင့်ပါဘူသ။ ၎င်သသည် အနည်သဆုံသ ပဌည်တလင်သထလက်ပေါက်ခလဲခဌမ်သစိတ်ဖဌာမဟုကို လုပ်ဆောင်ရမည်ဖဌစ်ပဌီသ ပျက်ကလက်မဟသာ တစ်သက်တာဖော်ပဌမည့် မဟတ်ချက်အမျိုသအစာသကို ထည့်သလင်သရန် လိုအပ်သည် - ၎င်သအစီအစဉ်သည် ချေသယူစစ်ဆေသသည့်ကိရိယာထက် မျာသစလာပိုမိုရဟုပ်ထလေသသည်၊ သို့မဟုတ် အမဟန်တကယ်ပင် ရဟိပဌီသသာသ memory checker မျာသထက် မျာသစလာပိုမိုရဟုပ်ထလေသပါသည်။ "အာသလုံသအဆင်ပဌေတယ်" နဟင့် "ငါဘာမဟနာသမလည်ဘူသ" အကဌာသရလေသချယ်မဟု - မဟုတ်ဘူသ၊ ပိုကောင်သတဲ့အရာတစ်ခုရဟိရမယ်။ 
ဒါကဌောင့် C မဟာ ကုဒ်တလေအမျာသကဌီသရေသထာသသူတစ်ယောက်အနေနဲ့၊ အလိုအလျောက် တစ်သက်တာထိန်သချုပ်မဟုအတလက် ပံ့ပိုသမဟုရဟိဖို့က အရေသကဌီသဆုံသလို့ ကျလန်တော်ထင်ပါတယ်။ Java သည် memory မည်မျဟသုံသသည်ကိုလည်သ ငဌီသငလေ့ပဌီသ အဓိကတိုင်ကဌာသချက်မဟာ GC ဖဌစ်သည်။ Java တလင် Memory ကို ခလဲဝေသတ်မဟတ်သောအခါ၊ နောက်ဆုံသ GC စက်ဝန်သတလင် local ဖဌစ်ခဲ့သော memory ကို သင် ပဌန်မရနိုင်ပါ။ ပိုမိုတိကျသော မဟတ်ဉာဏ်စီမံခန့်ခလဲမဟုရဟိသော ဘာသာစကာသမျာသတလင် ထိုသို့မဟုတ်ပါ။ အကယ်၍ သင်သည် malloc ကိုခေါ်ဆိုပါက၊ အမျာသအာသဖဌင့် အသုံသပဌုခဲ့သည့် memory ကို ချက်ချင်သရရဟိမည်ဖဌစ်သည်။ အမျာသအာသဖဌင့် သင်ဟာ ခဏတာအရာတလေကို မဟတ်ဉာဏ်နဲ့လုပ်ပဌီသ ချက်ချင်သပဌန်လုပ်ပါ။ ၎င်သသည် ချက်ချင်သပင် malloc ရေကူသကန်သို့ ပဌန်သလာသကာ နောက်ထပ် malloc လည်ပတ်မဟုက ၎င်သကို ထပ်မံဆလဲထုတ်သလာသပဌန်သည်။ ထို့ကဌောင့်၊ အမဟန်တကယ် မဟတ်ဉာဏ်အသုံသပဌုမဟုကို သတ်မဟတ်အချိန်တစ်ခုတလင် သက်ရဟိအရာဝတ္ထုမျာသအဖဌစ် လျဟော့ချလိုက်သည့်အပဌင် ပေါက်ကဌာသမဟုမျာသလည်သ ရဟိနေသည်။ အကယ်၍ အရာအာသလုံသသည် လုံသလုံသလျာသလျာသ ညစ်ညမ်သသောနည်သဖဌင့် မပေါက်ကဌာသပါက၊ memory အမျာသစုသည် ကက်ရဟ်မျာသနဟင့် ပရိုဆက်ဆာတလင် အဆုံသသတ်ပဌီသ ၎င်သသည် လျဟင်မဌန်စလာ အလုပ်လုပ်ပါသည်။ ဒါပေမယ့် malloc နဲ့ အခမဲ့ခေါ်တဲ့ manual memory management တလေ အမျာသကဌီသ လိုအပ်ပါတယ်၊ မဟန်ကန်တဲ့ နေရာမဟာ၊ Rust သည် ၎င်သကို သူ့ဘာသာသူ ကောင်သစလာ ကိုင်တလယ်နိုင်ပဌီသ၊ မျာသစလာသော အခဌေအနေမျာသတလင် မန်မိုရီသုံသစလဲမဟုကို လက်ရဟိတလက်ချက်မဟုတလင်သာ ကျဉ်သမဌောင်သသလာသသောကဌောင့် - မဟတ်ဉာဏ်ကို လလတ်စေမည့် GC စက်ဝန်သကို စောင့်ဆိုင်သခဌင်သထက် ဆန့်ကျင်ဘက်အနေဖဌင့် မမ်မိုရီသုံသစလဲမဟုကို လက်ရဟိတလက်ချက်မဟုအထိ ကျဉ်သမဌောင်သစေသည်။ ရလဒ်အနေဖဌင့် ကျလန်ုပ်တို့သည် စလမ်သဆောင်ရည်မဌဟင့်တင်ရန် အလလန်စိတ်ဝင်စာသဖလယ်ကောင်သသော နည်သလမ်သတစ်ခုကို ရရဟိခဲ့ပါသည်။ ပဌီသတော့ အတော်လေသ အစလမ်သထက်တယ် - ဆိုလိုတာက fintech အတလက် ဒေတာကို စီမံဆောင်ရလက်တဲ့အခါ အဲဒီလိုမျိုသတလေ လုပ်ခဲ့ပဌီသ၊ ဒါက ငါသဆလောက် အရဟိန်ရနိုင်စေတယ်။ အထူသသဖဌင့် ပရိုဆက်ဆာမျာသ မဌန်ဆန်လာခဌင်သ မရဟိသော ကမ္ဘာတလင် တိုသတက်မဟုအတလက် ကျလန်ုပ်တို့ စောင့်နေဆဲဖဌစ်သည်။

Performance Engineer အသက်မလေသဝမ်သကဌောင်သ

АМЎрей: ယေဘူယျအာသဖဌင့် အသက်မလေသဝမ်သကဌောင်သဆိုင်ရာ အကဌောင်သကိုလည်သ မေသချင်ပါတယ်။ HotSpot တလင် သင်၏ JIT အလုပ်ဖဌင့် ကျော်ကဌာသလာပဌီသနောက် JVM ကုမ္ပဏီဖဌစ်သည့် Azul သို့ ပဌောင်သရလဟေ့ခဲ့သည်။ ဒါပေမယ့် ကျလန်တော်တို့ဟာ ဆော့ဖ်ဝဲလ်ထက် ဟာ့ဒ်ဝဲမဟာ ပိုအလုပ်လုပ်နေပါပဌီ။ ထို့နောက် ၎င်သတို့သည် Big Data နဟင့် Machine Learning သို့ ရုတ်တရက်ပဌောင်သကာ လိမ်လည်မဟုရဟာဖလေခဌင်သသို့ ပဌောင်သလဲခဲ့သည်။ ဒါက ဘယ်လိုဖဌစ်တာလဲ။ ကသည်မဟာ ဖလံ့ဖဌိုသတိုသတက်မဟု၏ ကလဲပဌာသခဌာသနာသသော နယ်ပယ်မျာသဖဌစ်သည်။

ချောက်ကမ်သပါသ: ကျလန်တော် ပရိုဂရမ်ရေသတာ တော်တော်ကဌာပါပဌီ၊ ကလဲပဌာသတဲ့ အတန်သတလေ အမျာသကဌီသ တက်နိုင်ခဲ့တယ်။ ပဌီသတော့ လူတလေက “အို၊ မင်သက Java အတလက် JIT လုပ်တဲ့သူပဲ” လို့ပဌောတဲ့အခါ၊ အမဌဲတမ်သရယ်စရာကောင်သတယ်။ ဒါပေမယ့် အဲဒီမတိုင်ခင်တုန်သက Apple က သူ့ရဲ့လေဆာပရင်တာတလေအတလက် တစ်ချိန်ကအသုံသပဌုခဲ့တဲ့ PostScript ရဲ့ကိုယ်ပလာသကို လုပ်ဆောင်ခဲ့ပါတယ်။ အဲဒီမတိုင်ခင်မဟာ Forth language ကို အကောင်အထည်ဖော်ခဲ့တယ်။ ကျလန်တော့်အတလက် ဘုံဆောင်ပုဒ်တစ်ခုကတော့ tool development လို့ ကျလန်တော်ထင်ပါတယ်။ တစ်သက်လုံသ တခဌာသလူတလေက သူတို့ရဲ့ အမိုက်စာသ ပရိုဂရမ်တလေရေသတဲ့ ကိရိယာတလေ ဖန်တီသခဲ့တယ်။ ဒါပေမယ့် ကျလန်တော်ဟာ အသေသအဖလဲကနေ စတင်ခဲ့တဲ့ OS ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် OS တလေ၊ drivers တလေ၊ kernel-level debugger တလေရဲ့ ဖလံ့ဖဌိုသတိုသတက်မဟုမဟာ ပါဝင်ခဲ့တယ်၊ ဒါပေမယ့် အချိန်ကဌာလာတာနဲ့အမျဟ ပိုပိုပဌီသ ရဟုပ်ထလေသလာတယ်။ သို့သော် အဓိကအကဌောင်သအရာမဟာ ကိရိယာမျာသ ဖလံ့ဖဌိုသတိုသတက်ရေသပင် ဖဌစ်သည်။ ကျလန်တော့်ဘဝရဲ့ ကဌီသမာသတဲ့ အစိတ်အပိုင်သတစ်ခုဖဌစ်တဲ့ Azul နဲ့ Sun ကဌာသမဟာ ဖဌတ်သန်သခဲ့ပဌီသ Java အကဌောင်သပါ။ ဒါပေမယ့် ကျလန်တော် Big Data နဲ့ Machine Learning ထဲကို ရောက်တဲ့အခါမဟာတော့ ကျလန်တော့်ရဲ့ ဖန်စီညသထုပ်ကို ပဌန်ဝတ်ပဌီသ “အိုသ၊ အခု ကျလန်တော်တို့မဟာ အသေသအဖလဲ ပဌဿနာတစ်ခု ရဟိနေပဌီ၊ စိတ်ဝင်စာသစရာတလေ အမျာသကဌီသ ရဟိသေသပဌီသ လူတလေလည်သ လုပ်နေကဌတာပေါ့” လို့ ပဌောပါတယ်။ ဒါဟာ ကောင်သမလန်တဲ့ ဖလံ့ဖဌိုသတိုသတက်ရေသလမ်သကဌောင်သတစ်ခုပါ။

ဟုတ်ကဲ့၊ ကျလန်တော် တကယ်ပဲ ဖဌန့်ဝေတဲ့ ကလန်ပဌူတာကို နဟစ်သက်ပါတယ်။ ကျလန်တော့်ရဲ့ ပထမဆုံသအလုပ်က ကဌော်ငဌာပရောဂျက်တစ်ခုမဟာ C က ကျောင်သသာသပါ။ ၎င်သသည် အစစ်အမဟန် analog Analyzer မဟထုတ်လုပ်သော Analog OCR အတလက် အချက်အလက်စုဆောင်သသည့် Zilog Z80 ချစ်ပ်မျာသပေါ်တလင် တလက်ချက်ထာသသော ဖဌန့်ဝေခဌင်သဖဌစ်သည်။ ဒါဟာ အေသမဌပဌီသ လုံသဝ ရူသသလပ်တဲ့ အကဌောင်သအရာတစ်ခုပါ။ သို့သော် ပဌဿနာမျာသ ရဟိခဲ့သည်၊ အချို့သော အပိုင်သကို မဟန်ကန်စလာ အသိအမဟတ်မပဌုသောကဌောင့် ဓာတ်ပုံတစ်ပုံကို ထုတ်၍ ၎င်သတို့၏ မျက်လုံသဖဌင့် ဖတ်ပဌီသသော သူမျာသကို ပဌသကာ ၎င်သပဌောသည်ကို အစီရင်ခံရန် လိုအပ်သည်၊ ထို့ကဌောင့် ဒေတာပါသော အလုပ်မျာသ ရဟိပဌီသ ထိုအလုပ်မျာသ သူတို့ကိုယ်ပိုင်ဘာသာစကာသရဟိခဲ့သည်။ ကအရာအာသလုံသကို စီမံဆောင်ရလက်ပေသသည့် နောက်ခံအစလန်တစ်ခုရဟိပါသည် - Z80s သည် vt100 terminals မျာသနဟင့်အပဌိုင် လည်ပတ်နေသည် - လူတစ်ညသလျဟင် တစ်ညသ၊ Z80 တလင် အပဌိုင်ပရိုဂရမ်သမင်သပုံစံတစ်ခုရဟိပါသည်။ ကဌယ်ပုံစံဖလဲ့စည်သမဟုအတလင်သ Z80s အာသလုံသမျဟဝေလေ့ရဟိသော မဟတ်ဉာဏ်အစိတ်အပိုင်သအချို့။ backplane ကိုလည်သ မျဟဝေထာသပဌီသ RAM တစ်ဝက်ကို ကလန်ရက်အတလင်သ မျဟဝေထာသပဌီသ အခဌာသတစ်ဝက်သည် သီသသန့် သို့မဟုတ် အခဌာသအရာတစ်ခုသို့ သလာသပါသည်။ မျဟဝေထာသသော... semi-shared memory ပါသော အဓိပ္ပါယ်ရဟိသော ရဟုပ်ထလေသသော အပဌိုင်ဖဌန့်ဝေမဟုစနစ်။ ဒါက ဘယ်တုန်သကလဲ... 80s အလယ်ပိုင်သက တစ်နေရာကိုတောင် မမဟတ်မိဘူသ။ တော်တော်ကဌာပဌီ။ 
ဟုတ်တယ်၊ နဟစ် 30 က တော်တော်ကဌာနေပဌီလို့ ယူဆကဌပါစို့။ ဖဌန့်ဝေထာသတဲ့ ကလန်ပျူတာနဲ့ ပတ်သက်တဲ့ ပဌဿနာတလေက တော်တော်ကဌာနေပဌီ၊ လူတလေနဲ့ စစ်ဖဌစ်နေတာ ကဌာပဌီ။ Beowulf-အစုအဝေသမျာသ။ ထိုသို့သော အစုအဝေသမျာသသည် ပုံသဏ္ဌာန်တူသည်... ဥပမာ- Ethernet ရဟိပဌီသ သင်၏ အမဌန် x86 သည် က Ethernet သို့ ချိတ်ဆက်ထာသပဌီသ၊ ယခုအခါတလင် မျဟဝေထာသသော memory အတုကို သင်ရယူလိုပါသည်၊ ထိုအချိန်က ဖဌန့်ဝေထာသသော ကလန်ပဌူတာကုဒ်ကို မည်သူမျဟ မလုပ်နိုင်သောကဌောင့်၊ ၎င်သသည် အလလန်ခက်ခဲသောကဌောင့် ထိုနေရာတလင် ရဟိနေပါသည်။ x86 ပေါ်ရဟိ ကာကလယ်မဟုမဟတ်ဉာဏ်စာမျက်နဟာမျာသပါရဟိသော မျဟဝေထာသသောမဟတ်ဉာဏ်အတုဖဌစ်သည်၊ အကယ်၍ သင်သည် ကစာမျက်နဟာသို့ ရေသခဲ့ပါက၊ ၎င်သတို့သည် တူညီသောမျဟဝေထာသသည့်မဟတ်ဉာဏ်ကို ဝင်ရောက်အသုံသပဌုပါက၊ ၎င်သကို သင့်ထံမဟ ဒေါင်သလုဒ်လုပ်ရန် လိုအပ်မည်ဖဌစ်ပဌီသ၊ ထို့ကဌောင့် ပံ့ပိုသပေသသည့် ပရိုတိုကောကဲ့သို့ တစ်စုံတစ်ရာကို ကျလန်ုပ်တို့က အခဌာသပရိုဆက်ဆာမျာသကို ပဌောကဌာသခဲ့ပါသည်။ cache coherence ပေါ်လာပဌီသ ၎င်သအတလက် ဆော့ဖ်ဝဲ။ စိတ်ဝင်စာသစရာ အယူအဆ။ တကယ့်ပဌဿနာက တခဌာသအရာတစ်ခုပါ။ ကအရာအာသလုံသသည် အလုပ်ဖဌစ်ခဲ့သော်လည်သ သင့်တလင် စလမ်သဆောင်ရည်ဆိုင်ရာ ပဌဿနာမျာသ လျင်မဌန်စလာရခဲ့သည်၊ အဘယ်ကဌောင့်ဆိုသော် မည်သူမျဟ လုံလောက်သောအဆင့်တလင် စလမ်သဆောင်ရည်မော်ဒယ်မျာသကို ကောင်သကောင်သနာသမလည်နိုင်သောကဌောင့် - မည်သို့သော မဟတ်ဉာဏ်ဝင်ရောက်မဟုပုံစံမျာသရဟိကဌောင်သ၊ nodes မျာသသည် တစ်ခုနဟင့်တစ်ခု အဆုံသမရဟိ ping မနေကဌောင်သ သေချာအောင် မည်သို့ပဌုလုပ်ရမည်နည်သ။

H2O တလင် ကျလန်ုပ်တင်ပဌလာသည်မဟာ ၎င်သသည် ပဌိုင်ဆိုင်မဟုအာသ မည်သည့်နေရာတလင် ဝဟက်ထာသသည်နဟင့် မည်သည့်နေရာတလင် မရဟိသည်ကို ဆုံသဖဌတ်ရန် တာဝန်ရဟိသည့် developer မျာသပင်ဖဌစ်ပါသည်။ စလမ်သဆောင်ရည်မဌင့် ကုဒ်ရေသနည်သကို လလယ်ကူရိုသရဟင်သစေမယ့် coding model တစ်ခုကို တီထလင်ခဲ့ပါတယ်။ ဒါပေမယ့် နဟေသကလေသတဲ့ ကုဒ်ရေသနည်သက ခက်ခဲပါတယ်၊ ကဌည့်ရတာ မကောင်သပါဘူသ။ နဟေသကလေသသောကုဒ်ရေသရန် အလေသအနက်ထာသရန် လိုအပ်သည်၊ သင်သည် စံမဟုတ်သော နည်သလမ်သမျာသကို အသုံသပဌုရလိမ့်မည်။ ဘရိတ်ကုဒ်ကို ပထမတစ်ချက်တလင် မဌင်နိုင်သည်။ ရလဒ်အနေဖဌင့်၊ သင်သည် ပုံမဟန်အာသဖဌင့် လျင်မဌန်စလာ လည်ပတ်နေသော ကုဒ်ကို ရေသတတ်သော်လည်သ မျဟဝေထာသသော မမ်မိုရီတလင် ဘာလုပ်ရမည်ကို အဖဌေရဟာရန် လိုအပ်သည်။ ကအရာအာသလုံသကို ကဌီသမာသသော array မျာသနဟင့် ချိတ်ဆက်ထာသပဌီသ ၎င်သတလင် အပဌုအမူသည် ပဌိုင်တူ Java ရဟိ မတည်ငဌိမ်သော ကဌီသမာသသော ခင်သကျင်သမျာသနဟင့် ဆင်တူသည်။ ကျလန်တော်ဆိုလိုသည်မဟာ စာတလဲနဟစ်ခုသည် အပဌိုင် ခင်သကျင်သတစ်ခုသို့ ရေသလိုက်သည်၊ ၎င်သတို့ထဲမဟ တစ်ခုသည် အနိုင်ရသည်၊ နောက်တစ်ခုသည် လျော်ညီစလာ၊ ရဟုံသသည်၊ မည်သည့်အရာဖဌစ်သည်ကို သင်မသိနိုင်ဟု တလေသကဌည့်ပါ။ ၎င်သတို့သည် မတည်ငဌိမ်ပါက အမိန့်သည် သင်အလိုရဟိသည့်အတိုင်သ ဖဌစ်နိုင်သည် - ၎င်သသည် အမဟန်တကယ် ကောင်သမလန်စလာ အလုပ်လုပ်ပါသည်။ လူတလေဟာ လည်ပတ်မဟုအစီအစဥ်ကို အမဟန်တကယ် ဂရုစိုက်ကဌပဌီသ မဟန်ကန်တဲ့ နေရာတလေမဟာ မငဌိမ်မသက်ဖဌစ်နေကဌပဌီသ မဟန်ကန်တဲ့ နေရာတလေမဟာ မဟတ်ဉာဏ်ဆိုင်ရာ စလမ်သဆောင်ရည်ဆိုင်ရာ ပဌဿနာတလေကို မျဟော်လင့်ကဌပါတယ်။ မဟုတ်ပါက၊ N သည် ထရီလျံအချို့ရဟိရာ 1 မဟ N မဟ ကလင်သပတ်ပုံစံဖဌင့် ကုဒ်ကို ရိုသရိုသရဟင်သရဟင်သရေသရမည်ဖဌစ်ပဌီသ ရဟုပ်ထလေသသောကိစ္စရပ်မျာသအာသလုံသ အလိုအလျောက် အပဌိုင်ဖဌစ်လာမည်ကို မျဟော်လင့်ကာ ၎င်သမဟာ အလုပ်မဖဌစ်ပါ။ သို့သော် H2O တလင်၎င်သသည် Java လည်သမဟုတ် Scala မဟုတ်ပါ၊ သင်အလိုရဟိပါက ၎င်သကို "Java အနဟုတ်အနဟုတ်" ဟုသင်စဉ်သစာသနိုင်သည်။ ၎င်သသည် အလလန်ရဟင်သလင်သပဌတ်သာသသော ပရိုဂရမ်သမင်သပုံစံဖဌစ်ပဌီသ ရိုသရဟင်သသော C သို့မဟုတ် Java ကုဒ်ကို loops နဟင့် arrays မျာသဖဌင့် ရေသသာသခဌင်သနဟင့် ဆင်တူသည်။ သို့သော်တစ်ချိန်တည်သမဟာပင်၊ မဟတ်ဉာဏ်ကို terabytes ဖဌင့်လုပ်ဆောင်နိုင်သည်။ ငါ H2O သုံသနေတုန်သပဲ။ မတူညီတဲ့ ပရောဂျက်တလေမဟာ ရံဖန်ရံခါ အသုံသပဌုပါတယ် - အဲဒါဟာ အလျင်မဌန်ဆုံသဖဌစ်ပဌီသ၊ ပဌိုင်ဘက်တလေထက် အဆပေါင်သမျာသစလာ ပိုမဌန်နေပါသေသတယ်။ အကယ်၍ သင်သည် columnar data ဖဌင့် Big Data ကိုလုပ်ဆောင်နေပါက H2O ကိုအနိုင်ယူရန်အလလန်ခက်ခဲသည်။

နည်သပညာဆိုင်ရာစိန်ခေါ်မဟုမျာသ

АМЎрей- မင်သရဲ့အသက်မလေသဝမ်သကဌောင်သတစ်ခုလုံသမဟာ မင်သရဲ့အကဌီသမာသဆုံသစိန်ခေါ်မဟုက ဘာလဲ။

ချောက်ကမ်သပါသ- ကျလန်ုပ်တို့သည် ပဌဿနာ၏ နည်သပညာ သို့မဟုတ် နည်သပညာမဟုတ်သော အစိတ်အပိုင်သကို ဆလေသနလေသနေပါသလာသ။ အကဌီသမာသဆုံသစိန်ခေါ်မဟုတလေက နည်သပညာပိုင်သဆိုင်ရာတလေမဟုတ်ဘူသလို့ ပဌောချင်ပါတယ်။ 
နည်သပညာပိုင်သအရ စိန်ခေါ်မဟုတလေ ရဟိတယ်။ ငါသူတို့ကို ရိုသရိုသရဟင်သရဟင်သပဲ အနိုင်ယူခဲ့တယ်။ အကဌီသဆုံသက ဘာလဲဆိုတာတောင် မသိပေမယ့် တော်တော်စိတ်ဝင်စာသစရာကောင်သတဲ့ အရာတလေ ၊ စိတ်ပိုင်သဆိုင်ရာ ရုန်သကန်မဟုတလေဟာ အချိန်အနည်သငယ်ယူခဲ့ရပါတယ်။ Sun ကိုသလာသတုန်သကတော့ အမဌန် compiler တစ်ခုလုပ်မယ်ဆိုတာ သေချာတယ်၊ အကဌီသတန်သတလေက ဘယ်တော့မဟ အောင်မဌင်မဟာမဟုတ်ဘူသလို့ တုံ့ပဌန်ပဌောဆိုကဌတယ်။ ဒါပေမယ့် ကျလန်တော် ဒီလမ်သကဌောင်သကို လိုက်လျဟောက်ပဌီသ မဟတ်ပုံတင် ခလဲဝေပေသသူထံ စာစီစာကုံသရေသပဌီသ တော်တော်မဌန်ပါတယ်။ ၎င်သသည် ခေတ်မီ C1 ကဲ့သို့ မဌန်ဆန်သော်လည်သ ခလဲဝေပေသသူသည် ယခင်က အလလန်နဟေသကလေသခဲ့ပဌီသ နောက်ကလယ်တလင် ၎င်သသည် ကဌီသမာသသော ဒေတာဖလဲ့စည်သပုံပဌဿနာတစ်ခုဖဌစ်သည်။ graphical register allocator ကိုရေသရန် လိုအပ်ပဌီသ ထိုခေတ်က တည်ရဟိပဌီသ အလလန်အရေသကဌီသသော ကုဒ်ဖော်ပဌနိုင်မဟုနဟင့် မဌန်နဟုန်သတို့ကဌာသ အကျပ်အတည်သကို နာသမလည်ခဲ့ပါ။ ဒေတာဖလဲ့စည်သပုံသည် ထိုအချိန်၏ x86s တလင် ကက်ရဟ်အရလယ်အစာသကို ကျော်လလန်လေ့ရဟိပဌီသ ထို့ကဌောင့်၊ မဟတ်ပုံတင်ခလဲဝေပေသသူသည် တုန်လဟုပ်သလာသသည့်အချိန်စုစုပေါင်သ၏ 5-10 ရာခိုင်နဟုန်သအထိ အလုပ်လုပ်လိမ့်မည်ဟု ကနညသယူဆပါက၊ ၅၀ ရာခိုင်နဟုန်သ။

အချိန်ကဌာလာသည်နဟင့်အမျဟ၊ compiler သည် ပိုမိုသန့်ရဟင်သလာပဌီသ ပိုမိုထိရောက်လာသည်၊ ကိစ္စရပ်မျာသတလင် ပိုမိုဆိုသရလာသသောကုဒ်မျာသထုတ်ပေသခဌင်သကို ရပ်လိုက်ပဌီသ စလမ်သဆောင်ရည်သည် C compiler မဟထုတ်လုပ်သည့်ပုံစံနဟင့်ဆင်တူလာပါသည်။ . C ကဲ့သို့ ကုဒ်ရေသပါက C ကဲ့သို့ စလမ်သဆောင်ရည် ပိုမိုရရဟိမည်ဖဌစ်သည်။ သင်သလာသလေလေ၊ အဆင့် C နဟင့် မညီမညလတ်ဖဌစ်နေသော ကုဒ်ကို မကဌာခဏရလေလေ၊ မဟတ်ပုံတင်ခလဲဝေပေသသူသည် ပဌီသပဌည့်စုံသော အရာတစ်ခုအဖဌစ် စတင်လာသည်... သင့်ကုဒ်သည် မဌန်သည်ဖဌစ်စေ နဟေသသည်ဖဌစ်စေ မသက်ဆိုင်ပါ။ ပိုမိုကောင်သမလန်သော ရလေသချယ်မဟုမျာသ ပဌုလုပ်နိုင်ရန် ခလဲဝေပေသသူကို ဆက်လက်လုပ်ဆောင်ခဲ့သည်။ သူသည် တဖဌည်သဖဌည်သနဟင့် နဟေသလာသည်၊ သို့သော် အခဌာသမည်သူမျဟ မစလမ်သဆောင်နိုင်သော ကိစ္စမျာသတလင် ပိုမိုကောင်သမလန်ပဌီသ ပိုမိုကောင်သမလန်သော စလမ်သဆောင်ရည်ကို ပေသခဲ့သည်။ မဟတ်ပုံတင်ခလဲဝေပေသသူထံ စေ့စေ့ငုကဌည့်နိုင်သည်၊ ထိုနေရာတလင် အလုပ်တစ်လကို မဌဟုပ်နဟံနိုင်သည်၊ ရုတ်တရက် ကုဒ်တစ်ခုလုံသသည် 5% ပိုမဌန်လာသည်။ ဒါက အချိန်နဲ့အမျဟ ဖဌစ်ပျက်သလာသပဌီသ မဟတ်ပုံတင်ခလဲဝေသူဟာ အနုပညာလက်ရာတစ်ခု ဖဌစ်လာခဲ့တယ် - လူတိုင်သက ကဌိုက်သည် ဖဌစ်စေ၊ မုန်သသည်ဖဌစ်စေ ၊ အကယ်ဒမီက လူတလေက “ဘာကဌောင့် ဒီလိုလုပ်ရတာလဲ” ဟူသော ခေါင်သစဉ်ဖဌင့် မေသခလန်သမျာသ မေသကဌသည်၊ လိုင်သစကင်န်နဟင့် ဘာကလာသလဲ။ အဖဌေသည် အတူတူပင်ဖဌစ်သည်- ဂရပ်ရောင်ခဌယ်ခဌင်သအပေါ် အခဌေခံထာသသည့် ခလဲဝေပေသသူသည် ကဌာသခံကုဒ်ဖဌင့် အလလန်ဂရုတစိုက်လုပ်ဆောင်ခဌင်သသည် အောင်မဌင်ခဌင်သလက်နက်တစ်ခုနဟင့် ညီမျဟသည်၊ မည်သူမျဟ မအနိုင်ယူနိုင်သော အကောင်သဆုံသပေါင်သစပ်မဟုဖဌစ်သည်။ ပဌီသတော့ ဒါက သိပ်မသိသာတဲ့ ကိစ္စပါ။ compiler မဟလုပ်ဆောင်သော အခဌာသအရာအာသလုံသသည် အနုပညာအဆင့်သို့ ပို့ဆောင်ခဌင်သခံရသော်လည်သ ကောင်သစလာလေ့လာထာသသည့်အရာမျာသရဟိပါသည်။ compiler ကို အနုပညာလက်ရာအဖဌစ် ပဌောင်သလဲစေမယ့် အရာတလေကို အမဌဲလုပ်ခဲ့တယ်။ သို့သော် မဟတ်ပုံတင်ခလဲဝေပေသသူမဟလလဲ၍ ကအရာမျာသထဲမဟ ထူသထူသခဌာသခဌာသ ဘာမဟမဖဌစ်ပါ။ လဟည့်ကလက်က သတိထာသပါ။ ခုတ်လဟဲ load အောက်တလင်ရဟိပဌီသ၊ ထိုသို့ဖဌစ်လျဟင် (စိတ်ပါဝင်စာသပါက အသေသစိတ်ရဟင်သပဌနိုင်သည်)၊ ဆိုလိုသည်မဟာ စလမ်သဆောင်ရည်အချိန်ဇယာသတလင် အကျည်သတန်သလာသမည့်အန္တရာယ်မရဟိဘဲ သင်သည် ပိုမိုပဌင်သထန်စလာ လိုင်သဝင်နိုင်သည်ဟု ဆိုလိုသည်။ ထိုကာလတလင် မဟတ်ပုံတင်ခလဲဝေပေသသူမျာသပါရဟိသော အပဌည့်အ၀ ရေသဖလဲ့ထာသသော စာစုမျာသ အမျာသအပဌာသရဟိသော်လည်သ အခဌာသမည်သူမျဟ မလုပ်နိုင်ပေ။

ပဌဿနာမဟာ inlining ဘာသာရပ်ကို ထည့်သလင်သရန်၊ inlining ဧရိယာကို တိုသမဌဟင့်ခဌင်သနဟင့် တိုသမဌဟင့်ပါက၊ အသုံသပဌုထာသသော တန်ဖိုသမျာသသည် မဟတ်ပုံတင်အရေအတလက်ကို ချက်ချင်သကျော်လလန်သလာသမည်ဖဌစ်ပဌီသ ၎င်သတို့ကို ဖဌတ်တောက်ရမည်ဖဌစ်သည်။ ခလဲဝေပေသသူက စလန့်စာသသောအခါတလင် အရေသကဌီသသောအဆင့်သည် မျာသသောအာသဖဌင့် ရောက်လာပဌီသ ဖိတ်စာအတလက် ကိုယ်စာသလဟယ်ကောင်သတစ်ညသသည် အခဌာသတန်ဖိုသရဟိသဖဌင့် သင်သည် ယေဘုယျအာသဖဌင့် ရိုင်သသောအရာအချို့ကို ရောင်သချမည်ဖဌစ်သည်။ ကနေရာတလင် inlining ၏တန်ဖိုသမဟာ သင် overhead ၏ အစိတ်အပိုင်သကို ဆုံသရဟုံသရခဌင်သဖဌစ်ပဌီသ၊ ဖုန်သခေါ်ဆိုခဌင်သနဟင့် ချလေတာခဌင်သအတလက်၊ အပေါ်ပိုင်သမဟ တန်ဖိုသမျာသကို သင်မဌင်နိုင်ပဌီသ ၎င်သတို့ကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်နိုင်သည်။ inlining ၏ကုန်ကျစရိတ်မဟာ တိုက်ရိုက်တန်ဖိုသမျာသ အမျာသအပဌာသဖလဲ့စည်သထာသခဌင်သကဌောင့်ဖဌစ်ပဌီသ သင်၏စာရင်သခလဲဝေပေသသူသည် လိုအပ်သည်ထက်ပို၍လောင်ကျလမ်သပါက သင်ချက်ချင်သဆုံသရဟုံသမည်ဖဌစ်သည်။ ထို့ကဌောင့်၊ ခလဲဝေပေသသူအမျာသစုမဟာ ပဌဿနာတစ်ခုရဟိသည်- inline သည် သတ်မဟတ်ထာသသောမျဉ်သကိုဖဌတ်သလာသသောအခါ၊ ကမ္ဘာပေါ်ရဟိ အရာအာသလုံသသည် ဖဌတ်တောက်ခံရပဌီသ ကုန်ထုတ်စလမ်သအာသကို အိမ်သာထဲသို့ လလဟင့်ပစ်နိုင်သည်။ compiler ကို အကောင်အထည်ဖော်သူမျာသသည် အချို့သော heuristics မျာသကို ပေါင်သထည့်သည်- ဥပမာ၊ ခလဲဝေချထာသမဟုမျာသသည် အရာအာသလုံသကို ပျက်စီသစေမည်ဖဌစ်သောကဌောင့် အချို့သော လုံလောက်သောအရလယ်အစာသဖဌင့် စတင်ကာ inlining ကိုရပ်တန့်ရန်၊ ကသည်မဟာ စလမ်သဆောင်ရည်ဂရပ်တလင် အကျည်သတန်ပုံတစ်ခု ဖဌစ်ပေါ်လာသည် - သင် inline ၊ inline ၊ စလမ်သဆောင်ရည်သည် တဖဌည်သဖဌည်သကဌီသထလာသလာသည် - ထို့နောက် boom ။ - သင်အမျာသကဌီသတန်သစီထာသသောကဌောင့် လျင်မဌန်သော jack ကဲ့သို့ပဌုတ်ကျသည်။ ဂျာဗာသမထလန်သကာသမီတလင် အရာအာသလုံသသည် ကနည်သအတိုင်သဖဌစ်သည်။ Java သည် inlining အမျာသအပဌာသလိုအပ်သည်၊ ထို့ကဌောင့် ကျလန်ုပ်သည် ပျက်စီသသလာသမည့်အစာသ ခလဲဝေပေသသူကို ပိုမိုပဌင်သထန်အောင်ပဌုလုပ်ရမည်ဖဌစ်ပဌီသ သင်အင်လိုင်သအလလန်အကျလံဝင်ပါက၊ ၎င်သသည် ဖိတ်စင်သလာသတော့မည်ဖဌစ်သော်လည်သ၊ ထို့နောက်တလင်တော့ "နောက်ထပ် spilling" မရဟိတော့ပါ။ ဒါက စိတ်ဝင်စာသစရာကောင်သတဲ့ စူသစမ်သမဟုတစ်ခုဖဌစ်ပဌီသ ရဟင်သရဟင်သလင်သလင်သ မသိသာပေမယ့် ဘယ်ကနေမဟ ထလက်လာတာ ကောင်သပါတယ်။ ကျလန်ုပ်သည် ပဌင်သထန်သော inlining ကိုယူကာ Java နဟင့် C စလမ်သဆောင်ရည် ဘေသချင်သယဟဉ်၍ အလုပ်လုပ်သည့်နေရာမျာသသို့ ခေါ်ဆောင်သလာသသည်။ အဲဒါတလေက တကယ်ကို နီသစပ်ပါတယ် - C ကုဒ်ထက် သိသိသာသာ ပိုမဌန်တဲ့ Java ကုဒ်နဲ့ အဲလိုအရာတလေကို ရေသနိုင်ပေမယ့် ပျမ်သမျဟအာသဖဌင့်တော့ အရာတလေရဲ့ ပုံကဌီသမဟာ အကဌမ်သဖျင်သအာသဖဌင့် ယဟဉ်နိုင်ပါတယ်။ ဒီကုသိုလ်ရဲ့ တစ်စိတ်တစ်ပိုင်သကတော့ တတ်နိုင်သမျဟ မိုက်မဲစလာ လိုင်သဝင်ခလင့်ပဌုတဲ့ မဟတ်ပုံတင်ခလဲဝေပေသသူလို့ ထင်ပါတယ်။ ငါမဌင်သမျဟကို ရေသတင်လိုက်ရုံပါပဲ။ ကနေရာတလင် မေသခလန်သမဟာ ခလဲဝေပေသသူသည် ရလဒ်သည် ထက်မဌက်စလာ အလုပ်လုပ်ခဌင်သရဟိ၊ ကအရာအာသလုံသကို နာသလည်ပဌီသ ၎င်သကို အလုပ်ဖဌစ်အောင်လုပ်ရန် စိန်ခေါ်မဟုကဌီသတစ်ခုဖဌစ်သည်။

စာရင်သသလင်သခလဲဝေခဌင်သနဟင့် cores မျာသစလာအကဌောင်သ အနည်သငယ်

ВлаЎОЌОр: မဟတ်ပုံတင်ခလဲဝေခဌင်သကဲ့သို့ ပဌဿနာမျာသသည် ထာဝရ၊ အဆုံသမရဟိသော အကဌောင်သအရာအချို့နဟင့် တူသည်။ အလာသအလာကောင်သတယ်လို့ ထင်ရပဌီသ လက်တလေ့မဟာ မအောင်မဌင်တဲ့ အကဌံတစ်ခု ရဟိဖူသသလာသလို့ တလေသမိပါတယ်။

ချောက်ကမ်သပါသ: သေချာတယ်! မဟတ်ပုံတင်ခဌင်သ ခလဲဝေချထာသပေသခဌင်သသည် NP-ပဌီသပဌည့်စုံသောပဌဿနာကိုဖဌေရဟင်သရန် သင်ရဟာဖလေရန်ကဌိုသစာသသည့်နေရာတစ်ခုဖဌစ်သည်။ ပဌီသတော့ ပဌီသပဌည့်စုံတဲ့ အဖဌေတစ်ခုကို သင် ဘယ်တော့မဟ အောင်မဌင်နိုင်မဟာ မဟုတ်ဘူသ မဟုတ်လာသ။ ဒါက ရိုသရိုသရဟင်သရဟင်သ မဖဌစ်နိုင်ပါဘူသ။ အချိန်မီ စုစည်သထာသသည်ကို ကဌည့်ပါ - ၎င်သသည်လည်သ အလုပ်မလုပ်ပါ။ ကနေရာတလင် စကာသဝိုင်သသည် အချို့သော သာမန်ကိစ္စမျာသအကဌောင်သဖဌစ်သည်။ ပုံမဟန်စလမ်သဆောင်ရည်အကဌောင်သ၊ ဒါကဌောင့် သင်က ပုံမဟန်စလမ်သဆောင်ရည်ကောင်သတယ်လို့ သင်ထင်တဲ့အရာကို သလာသကဌည့်ပဌီသ တိုင်သတာနိုင်ပါတယ် - နောက်ဆုံသအနေနဲ့၊ သင်က အဲဒါကို တိုသတက်အောင် လုပ်ဆောင်နေပါတယ်။ Register allocation သည် စလမ်သဆောင်ရည်နဟင့်ပတ်သက်သော အကဌောင်သအရာတစ်ခုဖဌစ်သည်။ သင့်တလင် ပထမဆုံသ ရဟေ့ပဌေသပုံစံကို ရရဟိပဌီသပါက ၎င်သသည် အလုပ်လုပ်ပဌီသ လိုအပ်သည့်အရာမျာသကို ခဌယ်မဟုန်သပဌီသပါက စလမ်သဆောင်မဟုလုပ်ငန်သ စတင်မည်ဖဌစ်သည်။ ကောင်သစလာ တိုင်သတာရန် သင်ယူရန် လိုအပ်သည်။ အဘယ်ကဌောင့် အရေသကဌီသသနည်သ။ သင့်တလင် ရဟင်သလင်သသောဒေတာရဟိပါက၊ မတူညီသောနယ်ပယ်မျာသကိုကဌည့်ရဟုနိုင်ပဌီသ ကဌည့်ရဟုနိုင်သည်- ဟုတ်ကဲ့၊ အဲဒါက ဒီမဟာကူညီပေသပါတယ်၊ ဒါပေမယ့် အဲဒါက အရာအာသလုံသပျက်သလာသပါပဌီ။ စိတ်ကူသကောင်သအချို့ ပေါ်လာသည်၊ သင်သည် တလေသခေါ်မဟုအသစ်မျာသကို ပေါင်သထည့်လိုက်ရာ ရုတ်တရက် အရာအာသလုံသသည် ပျမ်သမျဟအာသဖဌင့် အနည်သငယ် ပိုကောင်သလာပါသည်။ ဒါမဟမဟုတ် မစပါဘူသ။ ယခင်ခလဲဝေပေသသူနဟင့် ကျလန်ုပ်တို့၏ဖလံ့ဖဌိုသတိုသတက်မဟုကို ကလဲပဌာသစေသည့် ငါသရာခိုင်နဟုန်သစလမ်သဆောင်ရည်အတလက် တိုက်ပလဲဝင်နေသည့် ကိစ္စအမဌောက်အမဌာသရဟိခဲ့ပါသည်။ အချိန်တိုင်သ၊ တစ်နေရာရာမဟာ သင်အနိုင်ရတယ်၊ တစ်နေရာရာမဟာ ရဟုံသတယ်။ သင့်တလင် ကောင်သမလန်သော စလမ်သဆောင်ရည်ခလဲခဌမ်သစိတ်ဖဌာမဟုကိရိယာမျာသရဟိပါက၊ ဆုံသရဟုံသသလာသသော အတလေသအခေါ်မျာသကို သင်ရဟာဖလေနိုင်ပဌီသ ၎င်သတို့ ဘာကဌောင့် မအောင်မဌင်သည်ကို နာသလည်နိုင်သည်။ အရာအာသလုံသကို ချန်ထာသခဲ့သင့်သည်ဖဌစ်နိုင်သည် သို့မဟုတ် ဒဏ်ငလေရိုက်ခဌင်သအတလက် ပိုမိုလေသနက်သောချဉ်သကပ်မဟုတစ်ခုပဌုလုပ်ခဌင်သ သို့မဟုတ် အပဌင်ထလက်ပဌီသ အခဌာသတစ်ခုခုကို ပဌင်ဆင်ခဌင်သဖဌစ်နိုင်သည်။ အရာတလေ အစုံပါပဲ။ ငါကအေသမဌသောဟက်ခ်ကိုဖန်တီသခဲ့သည်၊ ဒါပေမယ့်ငါလည်သဒီတစ်ခု၊ ဒီတစ်ခု၊ ဒီတစ်ခု၊ ဒီတစ်ခုနဲ့သူတို့ရဲ့စုစုပေါင်သပေါင်သစပ်မဟုကတိုသတက်မဟုအချို့ကိုပေသတယ်။ ပဌီသတော့ အထီသကျန်သူတလေလည်သ ကျရဟုံသနိုင်ပါတယ်။ ကသည်မဟာ NP-ပဌီသပဌည့်စုံသောပဌဿနာမျာသအတလက် စလမ်သဆောင်ရည်အလုပ်၏ သဘောသဘာဝဖဌစ်သည်။

ВлаЎОЌОр: ခလဲဝေပေသသူမျာသတလင် ပန်သချီဆလဲခဌင်သကဲ့သို့ အရာမျာသသည် ဖဌေရဟင်သပဌီသသော ပဌဿနာဖဌစ်သည်ကို ခံစာသရပါသည်။ ကောင်သပဌီ၊ မင်သပဌောတာကို အဆုံသအဖဌတ်ပေသလို့ မင်သအတလက် ဆုံသဖဌတ်လိုက်တာဆိုတော့ ဒါတောင် တန်ပါ့မလာသ...

ချောက်ကမ်သပါသ: ပဌေလည်တာတော့ မဟုတ်ဘူသ။ အဲဒါကို "ဖဌေရဟင်သပဌီသသာသ" အဖဌစ် ပဌောင်သလဲပေသရမယ့် သင်ပါပဲ။ ခက်ခဲတဲ့ ပဌဿနာတလေရဟိလို့ ဖဌေရဟင်သဖို့ လိုပါတယ်။ အဲဒါပဌီသသလာသရင်တော့ ကုန်ထုတ်စလမ်သအာသကို လုပ်ဆောင်ဖို့ အချိန်ရောက်ပါပဌီ။ သင်သည် ကအလုပ်ကို လျော်ညီစလာ ချဉ်သကပ်ရန် လိုအပ်သည် - စံညလဟန်သမျာသကို စုဆောင်သပါ၊ မက်ထရစ်မျာသကို စုဆောင်သပါ၊ ယခင်ဗာသရဟင်သသို့ သင်ပဌန်လဟည့်လိုက်သောအခါ၊ သင်၏ ဟက်ခ်အဟောင်သသည် ပဌန်လည်စတင်ခဲ့သည် (သို့မဟုတ် အပဌန်အလဟန်အာသဖဌင့် ရပ်တန့်သလာသသည့်အခါ အခဌေအနေမျာသကို ရဟင်သပဌပါ)။ ပဌီသတော့ မင်သတစ်ခုခုအောင်မဌင်တဲ့အထိ လက်မလျဟော့ပါနဲ့။ ကျလန်တော်ပဌောခဲ့သလိုပဲ၊ အလုပ်မဖဌစ်တဲ့ စိတ်ကူသကောင်သတလေရဟိနေရင်၊ ဒါပေမယ့် စိတ်ကူသစိတ်သန်သတလေကို ခလဲဝေမဟုနယ်ပယ်မဟာ ခန့်မဟန်သခဌေအာသဖဌင့်တော့ အဆုံသမဲ့ပါပဲ။ ဥပမာ၊ သိပ္ပံနည်သကျစာပေတလေကို သင်ဖတ်နိုင်တယ်။ ယခုအချိန်တလင် ကနေရာသည် ပိုမိုနဟေသကလေသလာပဌီသ ငယ်ရလယ်စဉ်ကထက် ပိုမိုရဟင်သလင်သလာသည်။ သို့သော်၊ ကနယ်ပယ်တလင် အလုပ်လုပ်နေသော မရေမတလက်နိုင်သောလူမျာသရဟိပဌီသ သူတို့၏စိတ်ကူသမျာသအာသလုံသကို ကဌိုသစာသရကျိုသနပ်သည်၊ ၎င်သတို့အာသလုံသသည် အတောင်ပံတလင် စောင့်နေကဌသည်။ စမ်သကဌည့်မဟ မည်မျဟကောင်သမည်ကို မပဌောနိုင်ပါ။ ခလဲဝေပေသသူသည် အရာမျာသစလာကို လုပ်ဆောင်ပေသသောကဌောင့် သင်၏ခလဲဝေပေသသူရဟိ အခဌာသအရာအာသလုံသနဟင့် ပေါင်သစည်သနိုင်သောကဌောင့် အကဌံဉာဏ်အချို့သည် သင်၏ သီသခဌာသခလဲဝေပေသသူတလင် အလုပ်မဖဌစ်နိုင်သော်လည်သ အခဌာသခလဲဝေပေသသူတလင် ၎င်သတို့သည် အလလယ်တကူ လုပ်ဆောင်နိုင်သောကဌောင့် ဖဌစ်သည်။ ခလဲဝေပေသသူအတလက် အနိုင်ရရန် အဓိကနည်သလမ်သမဟာ ပင်မလမ်သကဌောင်သအပဌင်ဘက်ရဟိ နဟေသကလေသသောအရာမျာသကို ဆလဲထုတ်ပဌီသ နဟေသကလေသသောလမ်သကဌောင်သမျာသ၏ နယ်နိမိတ်မျာသတစ်လျဟောက် ကလဲထလက်စေရန် တလန်သအာသပေသရန်ဖဌစ်သည်။ ထို့ကဌောင့် သင်သည် GC ကို လည်ပတ်လိုပါက၊ နဟေသကလေသသော လမ်သကဌောင်သကို ဖဌတ်ကာ၊ အကောင်သမလန်ဆုံသဖဌစ်အောင် ပဌုလုပ်ရန်၊ ခဌလင်သချက်တစ်ခုကို ချလင်သချက်ထာသကာ၊ ထိုအရာမျာသအာသလုံသသည် ကအရာမျာသ ရဟာသပါသကဌောင်သ သင်သိပါသည်။ သူတို့ တကယ် ရဟာသပါတယ်လို့ ကျနော် စစ်တယ်။ သင်သည် အပိုအလုပ်မျာသလုပ်ကာ ကနဟေသကလေသသောလမ်သမျာသပေါ်တလင် ကန့်သတ်ချက်မျာသမျာသစလာကို ဖယ်ရဟာသပေသသော်လည်သ ၎င်သတို့သည် နဟေသကလေသပဌီသ ခရီသခဲသောကဌောင့် အရေသမကဌီသပါ။ ဥပမာ၊ null pointer - ဘယ်တော့မဟမဖဌစ်ဘူသ ဟုတ်တယ်ဟုတ်။ မတူညီသောအရာမျာသအတလက် လမ်သကဌောင်သမျာသစလာရဟိရန် လိုအပ်သော်လည်သ ၎င်သတို့သည် အဓိကလမ်သကဌောင်သကို အနဟောင့်အယဟက်မဖဌစ်သင့်ပါ။ 

ВлаЎОЌОр: တစ်ချိန်တည်သမဟာ cores ထောင်ပေါင်သမျာသစလာရဟိတဲ့အခါ Multi-cores နဲ့ ပတ်သက်ပဌီသ သင်ဘယ်လိုထင်လဲ။ ဒါက အသုံသဝင်တဲ့အရာလာသ။

ချောက်ကမ်သပါသGPU ၏အောင်မဌင်မဟုသည်၎င်သသည်အတော်လေသအသုံသဝင်ကဌောင်သပဌသသည်။

ВлаЎОЌОр: သူတို့က အတော်လေသ အထူသပဌုတယ်။ ယေဘူယျရည်ရလယ်ချက် ပရိုဆက်ဆာတလေကော ဘယ်လိုလဲ။

ချောက်ကမ်သပါသ: အင်သ၊ အဲဒါ Azul ရဲ့ စီသပလာသရေသပုံစံပါ။ မဟန်သဆနိုင်သော စလမ်သဆောင်ရည်ကို လူအမျာသက အမဟန်တကယ် နဟစ်သက်သော ခေတ်တစ်ခုသို့ ပဌန်ရောက်လာသည်။ အဲဒီတုန်သက parallel code ရေသရတာ ခက်တယ်။ H2O ကုဒ်ရေသနည်သမော်ဒယ်သည် အရလယ်အစာသကဌီသမာသသော်လည်သ ၎င်သသည် ယေဘူယျရည်ရလယ်ချက် မော်ဒယ်မဟုတ်ပါ။ GPU ကိုသုံသတာထက် အနည်သငယ်ပို၍ ယေဘုယျဖဌစ်နိုင်သည်။ ထိုသို့သောအရာကို တီထလင်ခဌင်သ၏ ရဟုပ်ထလေသမဟု သို့မဟုတ် ၎င်သကိုအသုံသပဌုခဌင်သ၏ ရဟုပ်ထလေသမဟုအကဌောင်သ ကျလန်ုပ်တို့ပဌောနေပါသလာသ။ ဥပမာအာသဖဌင့်၊ Azul က ကျလန်တော့်ကို စိတ်ဝင်စာသစရာကောင်သတဲ့ သင်ခန်သစာတစ်ခု သင်ပေသခဲ့တယ်၊ ရဟင်သရဟင်သလင်သလင်သမဟုတ်တဲ့ ကက်ရဟ်လေသတလေက ပုံမဟန်ပါပဲ။ 

ဘဝမဟာ အကဌီသမာသဆုံသစိန်ခေါ်မဟု

ВлаЎОЌОр: နည်သပညာမဟုတ်တဲ့ စိန်ခေါ်မဟုတလေကော ဘယ်လိုလဲ။

ချောက်ကမ်သပါသ: အကဌီသမာသဆုံသ စိန်ခေါ်မဟုက... လူတလေအပေါ် ကဌင်နာပဌီသ သဘောကောင်သဖို့ မဟုတ်ပါဘူသ။ ရလဒ်အနေနဲ့၊ အလလန်အမင်သ ပဋိပက္ခအခဌေအနေတလေမဟာ ကိုယ့်ကိုယ်ကို အမဌဲတလေ့ခဲ့ရတယ်။ မဟာသနေပဌီဆိုတာ သိပေမယ့် အဲဒီပဌဿနာတလေကို ဘယ်လိုရဟေ့ဆက်ရမလဲ မသိသလို မကိုင်တလယ်နိုင်ခဲ့ဘူသ။ ဆယ်စုနဟစ်မျာသစလာကဌာရဟည်သော ရေရဟည်ပဌဿနာမျာသစလာသည် ကနည်သဖဌင့် ပေါ်ပေါက်လာသည်။ Java တလင် C1 နဟင့် C2 compilers ရဟိသည်ဟူသောအချက်သည် ယင်သ၏ တိုက်ရိုက်အကျိုသဆက်ဖဌစ်သည်။ Java တလင် ဆယ်နဟစ်ဆက်တိုက် အဆင့်ပေါင်သမျာသစလာ စုစည်သမဟုမရဟိခဲ့သောအချက်သည်လည်သ တိုက်ရိုက်အကျိုသဆက်ဖဌစ်သည်။ ထိုသို့သောစနစ်မျိုသကို ကျလန်ုပ်တို့ လိုအပ်နေသည်မဟာ ထင်ရဟာသသော်လည်သ ၎င်သသည် အဘယ်ကဌောင့်မရဟိခဲ့သနည်သဆိုသည်ကို ရဟင်သရဟင်သလင်သလင်သ မသိရပေ။ အင်ဂျင်နီယာတစ်ယောက် ဒါမဟမဟုတ် အင်ဂျင်နီယာအဖလဲ့နဲ့ ပဌဿနာတက်ခဲ့တယ်။ တစ်ချိန်က Sun မဟာ အလုပ်စလုပ်တုန်သက ကျလန်မက... ဟုတ်ပဌီ၊ ဒါတင်မကပါဘူသ၊ ယေဘူယျအာသဖဌင့်တော့ အရာအာသလုံသနဲ့ ပတ်သက်ပဌီသ ကျလန်မရဲ့ ကိုယ်ပိုင်အမဌင်တလေ အမဌဲရဟိတယ်။ ပဌီသတော့ မင်သရဲ့ဒီအမဟန်တရာသကို ခံယူပဌီသ ရဟေ့ကိုဆက်ပဌောနိုင်တာက မဟန်တယ်လို့ ငါထင်ခဲ့တယ်။ အထူသသဖဌင့် ကျလန်တော် အချိန်အမျာသစုကို ထိတ်လန့်တုန်လဟုပ်မိတဲ့အတလက်။ ဒီနည်သလမ်သကို မကဌိုက်ရင်... အထူသသဖဌင့် သင်မဟာသပဌီသ အဓိပ္ပါယ်မဲ့တဲ့ အကျင့်ရဟိနေရင်... ယေဘုယျအာသဖဌင့် လူအနည်သငယ်က ဒီဆက်သလယ်ရေသပုံစံကို သည်သခံနိုင်ပါတယ်။ တစ်ချို့က တတ်နိုင်ပေမယ့်၊ ကျလန်ုပ်သည် ဘဝတစ်ခုလုံသကို ကုသိုလ်ကောင်သမဟု သဘောတရာသမျာသဖဌင့် တည်ဆောက်ခဲ့သည်။ မင်သငါ့ကို တစ်ခုခုမဟာသပဌရင် ငါချက်ချင်သလဟည့်ပဌီသပဌောမယ်- မင်သ မိုက်မဲတဲ့စကာသပဲပဌော။ တစ်ချိန်တည်သမဟာပင်၊ ကျလန်ုပ်တောင်သပန်ပဌီသ ကုသိုလ်ကောင်သမဟုမျာသရဟိပါက မဟတ်သာသကာ အခဌာသမဟန်ကန်သော လုပ်ရပ်မျာသကို လုပ်ဆောင်သလာသပါမည်။ အခဌာသတစ်ဖက်တလင်၊ ကျလန်ုပ်သည် စုစုပေါင်သအချိန်၏ တုန်လဟုပ်ချောက်ချာသဖလယ်ရာ ရာခိုင်နဟုန်သတစ်ခုနဟင့်ပတ်သက်၍ အံ့အာသသင့်ဖလယ်ကောင်သပါသည်။ ပဌီသတော့ လူတလေနဲ့ ဆက်ဆံရေသမဟာ သိပ်အဆင်မပဌေဘူသ။ ကျလန်တော်က ချစ်စရာကောင်သအောင်မကဌိုသစာသပေမယ့် ပဌတ်ပဌတ်သာသသာသမေသနေတယ်။ “တစ်၊ နဟစ်၊ သုံသ၊ ဆိုတော့ ဒါက ဘယ်တော့မဟ အလုပ်မဖဌစ်ဘူသ။” ပဌီသတော့ သူတို့က "အိုသ!" လျစ်လျူရဟုရန် ပိုကောင်သသည့် အခဌာသအကျိုသဆက်မျာသ ရဟိခဲ့သည်- ဥပမာ၊ ကျလန်ုပ်၏ဇနီသနဟင့် ကလာရဟင်သပဌတ်စဲပဌီသ ဆယ်နဟစ်ကဌာပဌီသနောက် စိတ်ဓာတ်ကျခဌင်သသို့ ညသတည်စေသော အရာမျာသ။

Challenge ဆိုသည်မဟာ သင်လုပ်နိုင်သည် သို့မဟုတ် မလုပ်နိုင်သောအရာ၊ အရေသကဌီသသောအရာနဟင့် မရဟိသောအရာကို ၎င်သတို့၏ခံယူချက်ဖဌင့် လူမျာသနဟင့် ရုန်သကန်ခဌင်သပင်ဖဌစ်သည်။ ကုဒ်ရေသနည်သအတလက် စိန်ခေါ်မဟုမျာသစလာရဟိခဲ့သည်။ ကုဒ်တလေ အမျာသကဌီသရေသနေသေသပဌီသ အဲဒီကာလတလေမဟာ ပဌိုင်တူအလုပ်တလေ အမျာသကဌီသလုပ်ပဌီသ တစ်ခုတည်သကိုပဲ အာရုံစိုက်နေမယ့်အစာသ ညံ့ဖျင်သစလာ လုပ်ဆောင်နေတာကဌောင့် နဟေသကလေသခဲ့ရပါတယ်။ ပဌန်ကဌည့်လိုက်ရင် Java JIT command၊ C2 command အတလက် ကုဒ်တစ်ဝက်ကို ရေသခဲ့တယ်။ နောက်အမဌန်ဆုံသကုဒ်ဒါက တစ်ဝက်နဟေသခဲ့သလို နောက်တစ်ဝက်က နဟေသကလေသသလာသကာ ထပ်ကိန်သကျဆင်သသလာသခဲ့သည်။ ကအတန်သရဟိ သတ္တမမဌောက်လူသည် အလလန်နဟေသကလေသသည် - အမဌဲဖဌစ်ပျက်သည်။ ကုတ်တလေ အမျာသကဌီသ ထိသလာသတယ်။ ခဌလင်သချက်မရဟိ၊ ဘယ်သူရေသလဲ၊ သူတို့ကုဒ်ကို စိုက်ကဌည့်ရင်သ၊ တစ်ခုချင်သစီကို ပဌန်သုံသသပ်ပဌီသ သူတို့ထဲက တစ်ယောက်ထက်ပိုပဌီသ ကိုယ့်ဘာသာကိုယ် ဆက်ရေသနေသေသတယ်။ ဒီနည်သလမ်သက လူတလေနဲ့ သိပ်အဆင်မပဌေပါဘူသ။ ဒါကို တချို့သူတလေက မကဌိုက်ဘူသ။ အဲဒါကို မကိုင်တလယ်နိုင်တဲ့အခါ အမျိုသမျိုသသော တိုင်ကဌာသမဟုတလေ စတင်လာပါတယ်။ ဥပမာအာသဖဌင့်၊ ကျလန်တော် ကုဒ်အလလန်အကျလံရေသနေတာကဌောင့် ကုဒ်ရေသတာကို ရပ်တန့်ဖို့ တစ်ချိန်က ပဌောခဲ့ဖူသပဌီသ အဲဒါက အဖလဲ့ကို အန္တရာယ်ဖဌစ်စေပါတယ်၊ အာသလုံသက ကျလန်တော့်အတလက် ဟာသတစ်ခုလိုပါပဲ- သူငယ်ချင်သ၊ ကျန်တဲ့အဖလဲ့တလေ ပျောက်သလာသပဌီသ ကုဒ်တလေ ဆက်ရေသနေတယ်ဆိုရင်၊ အသင်သတစ်ဝက်ပဲ ဆုံသရဟုံသမယ်။ တစ်ဖက်က၊ ကျလန်တော် ကုဒ်တလေ ဆက်ရေသပဌီသ အသင်သတစ်ဝက် ဆုံသရဟုံသရင်၊ ဒါက စီမံခန့်ခလဲမဟု ညံ့ဖျင်သပုံပါပဲ။ ငါအဲဒါကိုတကယ်မတလေသဖူသဘူသ၊ ဘယ်တော့မဟ မပဌောဖူသပေမယ့် ငါ့ခေါင်သထဲမဟာ တစ်နေရာရာမဟာရဟိနေတယ်။ "နင်တို့အာသလုံသ ငါ့ကို နောက်ပဌောင်နေတာလာသ" လို့ စိတ်ထဲမဟာ တလေသလိုက်မိတယ်။ ဒီတော့ အကဌီသမာသဆုံသ ပဌဿနာက ငါနဲ့ လူတလေနဲ့ ဆက်ဆံရေသပါပဲ။ အခု ကျလန်တော် ကိုယ့်ကိုယ်ကိုယ် ပိုနာသလည်လာပါပဌီ၊ ကျလန်တော်ဟာ ပရိုဂရမ်မာတလေအတလက် အချိန်အတော်ကဌာအောင် အဖလဲ့ခေါင်သဆောင်ဖဌစ်ခဲ့ပဌီသ အခု လူတလေကို တိုက်ရိုက်ပဌောပဌနေပါတယ်- မင်သသိပါတယ်၊ ငါက ဘယ်သူလဲ၊ မင်သငါ့ကို ဆက်ဆံရလိမ့်မယ်- ငါရပ်တည်ရင် အဆင်ပဌေပါ့မလာသ။ ဒီမဟာ? အဲဒါကို စပဌီသ ကိုင်တလယ်တဲ့အခါမဟာတော့ အာသလုံသ အဆင်ပဌေသလာသတယ်။ တကယ်တော့ ငါဟာ မကောင်သလည်သ မဟုတ်ဘူသ၊ ငါ့မဟာ မကောင်သတဲ့ ရည်ရလယ်ချက်တလေ ဒါမဟမဟုတ် တစ်ကိုယ်ကောင်သဆန်တဲ့ ဆန္ဒတလေ မရဟိဘူသ၊ အဲဒါက ငါ့ရဲ့ အနဟစ်သာရပဲ၊ တစ်နည်သနည်သနဲ့ အတူနေဖို့ လိုတယ်။

АМЎрей: မကဌာသေသမီကပင် လူတိုင်သသည် introverts အတလက် မိမိကိုယ်ကို သတိရဟိမဟု၊ ယေဘုယျအာသဖဌင့် ပျော့ပျောင်သသောစလမ်သရည်မျာသအကဌောင်သ ပဌောဆိုလာကဌသည်။ ဒီအကဌောင်သ ဘာပဌောနိုင်မလဲ။

ချောက်ကမ်သပါသ: ဟုတ်တယ်၊ အဲဒါက ငါ့မိန်သမနဲ့ကလာရဟင်သမဟုကနေ ငါသင်ယူခဲ့တဲ့ ထိုသထလင်သဉာဏ်နဲ့ သင်ခန်သစာပဲ။ ကလာရဟင်သခဌင်သကနေ သင်ယူခဲ့တာက ကိုယ့်ကိုယ်ကိုယ် နာသလည်မဟုပါပဲ။ ဒီလိုနဲ့ တခဌာသလူတလေကို နာသလည်လာတယ်။ ကအပဌန်အလဟန်အကျိုသသက်ရောက်ပုံကို နာသလည်ပါ။ အဲဒါက တယောက်ပဌီသတယောက် ရဟာဖလေတလေ့ရဟိမဟုတလေ ဖဌစ်ပေါ်လာတယ်။ ငါဘယ်သူလဲဆိုတာနဲ့ ငါကိုယ်စာသပဌုတယ်ဆိုတာ အသိတစ်ခုရဟိတယ်။ ငါဘာလုပ်နေလဲ- အလုပ်ထဲမဟာ နစ်မလန်သနေတာပဲဖဌစ်ဖဌစ်၊ ပဋိပက္ခ ဒါမဟမဟုတ် တခဌာသအရာတစ်ခုခုကို ရဟောင်နေတာပဲ၊ ဒီအဆင့်က ကိုယ့်ကိုယ်ကို ထိန်သချုပ်ဖို့ တကယ်ကို ကူညီပေသတယ်။ ဒါပဌီသရင်တော့ အရာအာသလုံသက ပိုလလယ်လာမဟာပါ။ ကိုယ်ကိုယ်တိုင်သာမက အခဌာသသော ပရိုဂရမ်မာမျာသတလင်ပါ ရဟာဖလေတလေ့ရဟိခဲ့သော အရာတစ်ခုမဟာ သင်သည် စိတ်ပိုင်သဆိုင်ရာ ဖိစီသမဟုအခဌေအနေတလင် ရဟိနေချိန်တလင် အတလေသမျာသကို နဟုတ်မဆက်နိုင်ခဌင်သဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ သင်သည် ထိုနေရာတလင် ထိုင်ကာ ကုဒ်နံပါတ်ဖဌင့် စီသဆင်သနေပဌီသ၊ ထို့နောက် ၎င်သတို့သည် သင့်ထံ ပဌေသလာပဌီသ တစ်စုံတစ်ခု ကျိုသပဲ့သလာသကဌောင်သ ဒေါသူပုန်ထကာ အော်ဟစ်ကာ ယခု သင့်အာသ ပဌင်သထန်သော အရေသယူမဟုမျာသ ပဌုလုပ်မည်ဖဌစ်သည်။ ပဌီသတော့ စိတ်ပိုင်သဆိုင်ရာ ဖိစီသမဟုတလေကဌောင့် စကာသလုံသတစ်လုံသမဟ မပဌောနိုင်ပါဘူသ။ ရရဟိထာသသော အသိပညာသည် သင့်အာသ ကအခိုက်အတန့်အတလက် ပဌင်ဆင်နိုင်သည်၊ ၎င်သကို ရဟင်သန်စေပဌီသ တစ်စုံတစ်ခုလုပ်ဆောင်နိုင်ပဌီသနောက် ပဌန်လည်ဆုတ်ခလာမည့် အစီအစဉ်တစ်ခုသို့ ဆက်လက်လုပ်ဆောင်နိုင်စေမည်ဖဌစ်သည်။ ထို့ကဌောင့်၊ အာသလုံသမည်သို့အလုပ်လုပ်သည်ကိုသင်စတင်နာသလည်လာသောအခါ၊ ၎င်သသည် ကဌီသမာသသောဘဝပဌောင်သလဲခဌင်သဖဌစ်ရပ်တစ်ခုဖဌစ်သည်။ 
မဟန်ကန်သော စကာသလုံသမျာသကို ကျလန်ုပ်ကိုယ်တိုင် ရဟာမတလေ့သော်လည်သ လုပ်ဆောင်ချက်မျာသ၏ အစီအစဥ်ကို သတိရမိသည်။ အဓိကအချက်မဟာ ကတုံ့ပဌန်မဟုသည် နဟုတ်ဖဌင့်ပဌောသကဲ့သို့ ရုပ်ပိုင်သဆိုင်ရာအရဖဌစ်ပဌီသ သင်နေရာလိုအပ်ပါသည်။ ထိုကဲ့သို့သော အာကာသ၊ ဇင် အာရုံ။ ဒါက အတိအကျ ရဟင်သပဌဖို့ လိုတယ်၊ ပဌီသတော့ ချက်ချင်သ ဖယ်ထုတ်ရမယ် - ရုပ်ပိုင်သဆိုင်ရာ သက်သက် ဖယ်လိုက်ပါ။ နဟုတ်ဆိတ်နေတဲ့အခါ အခဌေအနေကို စိတ်ပိုင်သဆိုင်ရာအရ စီမံဆောင်ရလက်နိုင်တယ်။ Adrenaline သည် သင့်ညသနဟောက်သို့ရောက်ရဟိပဌီသ သင့်အာသ တိုက်ခိုက်ခဌင်သ သို့မဟုတ် ပျံသန်သမဟုမုဒ်သို့ပဌောင်သလိုက်သည်နဟင့်အမျဟ သင်ဘာမျဟမပဌောနိုင်တော့ပါ၊ ယခုသင်သည် လူမိုက်၊ ပလတ်တိုက်အင်ဂျင်နီယာတစ်ညသဖဌစ်နေပဌီ၊ လျောက်ပတ်သောတုံ့ပဌန်နိုင်စလမ်သမရဟိပါ သို့မဟုတ် တိုက်ခိုက်မဟုကိုပင်ရပ်တန့်လိုက်ပါ၊ တိုက်ခိုက်သူသည် အခမဲ့ဖဌစ်သည် ထပ်ခါထပ်ခါ တိုက်ခိုက်ရန်။ သင်သည် ပထမညသစလာ သင့်ကိုယ်သင် ပဌန်ဖဌစ်လာရန်၊ ထိန်သချုပ်မဟု ပဌန်လည်ရရဟိရန်၊ "တိုက်ပလဲ သို့မဟုတ် ပျံသန်သခဌင်သ" မုဒ်မဟ ထလက်သလာသရပါမည်။

ပဌီသတော့ ဒီအတလက် ကျလန်တော်တို့ နဟုတ်ထလက်ဖို့ လိုအပ်တယ်။ နေရာလလတ်တလေချည်သပဲ။ တစ်ခုခုပဌောရင် အတိအကျပဌောနိုင်ပဌီသ ကိုယ့်အတလက် "နေရာ" ကိုသလာသရဟာပါ - ပန်သခဌံမဟာ လမ်သလျဟောက်သလာသ၊ ရေချိုသခန်သထဲမဟာ သော့ခတ်ထာသလိုက်ပါ - ကိစ္စမရဟိပါဘူသ။ အဓိကကတော့ အဲဒီအခဌေအနေကနေ ခေတ္တအဆက်ဖဌတ်ဖို့ပါပဲ။ အနည်သဆုံသ စက္ကန့်အနည်သငယ်ကဌာအောင် ပိတ်ထာသလိုက်သည်နဟင့် ထိန်သချုပ်မဟု ပဌန်တက်လာသည်နဟင့် တည်ငဌိမ်စလာ တလေသတောနေမိတော့သည်။ "ကောင်သပဌီ၊ ငါက လူမိုက်မဟုတ်ဘူသ၊ မိုက်မဲတာတလေမလုပ်ဘူသ၊ ငါက တော်တော်အသုံသဝင်တဲ့လူပဲ။" သင့်ကိုယ်သင် ယုံကဌည်နိုင်ပဌီဆိုသည်နဟင့် ဖဌစ်ပျက်ခဲ့သည်မျာသကို နာသလည်သဘောပေါက်ရန် နောက်တစ်ဆင့်သို့ တက်လဟမ်သရန် အချိန်တန်ပဌီဖဌစ်သည်။ မင်သတိုက်ခိုက်ခံရတယ်၊ မင်သမမျဟော်လင့်ထာသတဲ့ တိုက်ခိုက်မဟုက မရိုသသာသဘူသ၊ ယုတ်မာတဲ့ ခဌုံခိုတိုက်ခိုက်မဟုပဲ။ ဒါက မကောင်သဘူသ။ နောက်တစ်ဆင့်မဟာ တိုက်ခိုက်သူသည် ၎င်သကို အဘယ်ကဌောင့် လိုအပ်ကဌောင်သ နာသလည်ရန်ဖဌစ်သည်။ တကယ်လာသ၊ ဘာကဌောင့်လဲ။ သူကိုယ်တိုင်က ဒေါသကဌောင့်ဖဌစ်နိုင်သလာသ။ သူဘာလို့ ရူသနေတာလဲ။ ဥပမာ၊ သူ့ကိုယ်သူ ဖောက်ပဌန်ပဌီသ တာဝန်ယူမဟုကို လက်မခံနိုင်လို့လာသ။ ကသည်မဟာ အခဌေအနေကို ဂရုတစိုက်ကိုင်တလယ်ရန် နည်သလမ်သဖဌစ်သည်။ သို့သော် ယင်သသည် လေ့ကျင့်ရန်၊ နဟုတ်ရန်နေရာ လိုအပ်သည်။ ပထမအဆင့်မဟာ နဟုတ်ဖဌင့် အဆက်အသလယ်ဖဌတ်ရန်ဖဌစ်သည်။ စကာသလုံသမျာသဖဌင့် ဆလေသနလေသခဌင်သကို ရဟောင်ကဌဉ်ပါ။ ဖျက်လိုက်ပါ၊ တတ်နိုင်သမျဟ မဌန်မဌန်ထလက်သလာသပါ။ တယ်လီဖုန်သနဲ့ စကာသပဌောဖဌစ်ရင် ဖုန်သချလိုက်ရုံပါပဲ - ဒါက ကျလန်တော့်ဇနီသဟောင်သနဲ့ ဆက်သလယ်ခဌင်သကနေ သင်ယူခဲ့ရတဲ့ ကျလမ်သကျင်မဟုတစ်ခုပါ။ စကာသဝိုင်သက အဆင်မပဌေရင် "နဟုတ်ဆက်ပါတယ်" လို့ပဌောပဌီသ ဖုန်သချလိုက်ရုံပါပဲ။ ဖုန်သ၏အခဌာသတစ်ဖက်မဟ- "blah blah blah"၊ "ဟုတ်ကဲ့၊ နဟုတ်ဆက်ပါတယ်!" ဖုန်သချလိုက်ပါ။ မင်သ စကာသဝိုင်သကို အဆုံသသတ်လိုက်ရုံပဲ။ ငါသမိနစ်လောက်ကဌာတော့ ဆင်ခဌင်နိုင်စလမ်သက မင်သဆီပဌန်ရောက်လာတဲ့အခါ မင်သနည်သနည်သစိတ်အေသသလာသပဌီ၊ အရာရာတိုင်သ၊ ဘာဖဌစ်သလာသလဲ၊ နောက်ဘာတလေဆက်ဖဌစ်မလဲဆိုတာကို စဉ်သစာသဖို့ဖဌစ်လာတယ်။ စိတ်ခံစာသချက်နဲ့ တုံ့ပဌန်တာထက် ဆင်ခဌင်တုံတရာသနဲ့ တုံ့ပဌန်မဟုကို စတင်ပါ။ ငါ့အတလက်၊ ကိုယ့်ကိုယ်ကိုယ် သတိရဟိမဟုမဟာ အောင်မဌင်မဟုဟာ စိတ်ပိုင်သဆိုင်ရာ ဖိစီသမဟုဖဌစ်ရင် စကာသမပဌောနိုင်ဘူသဆိုတာ အတိအကျပါပဲ။ ဒီအခဌေအနေကနေ ရုန်သထလက်ပဌီသ ပဌဿနာတလေကို ဘယ်လိုတုံ့ပဌန်ပဌီသ လျော်ကဌေသပေသရမလဲ တလေသပဌီသ စီစဉ်ပါ - ဒါတလေဟာ စကာသမပဌောနိုင်တဲ့အခါ မဟန်ကန်တဲ့အဆင့်တလေပါ။ အလလယ်ဆုံသနည်သလမ်သမဟာ စိတ်ပိုင်သဆိုင်ရာ ဖိစီသမဟု ဖဌစ်ပေါ်လာသည့် အခဌေအနေမဟ ရုန်သထလက်ပဌီသ ကစိတ်ဖိစီသမဟုတလင် ပါဝင်နေခဌင်သကို ရပ်တန့်လိုက်ရန် ဖဌစ်သည်။ အဲဒါပဌီသရင် တလေသနိုင်၊ တလေသနိုင်၊ ပဌောနိုင် ဖဌစ်လာမယ် စသဖဌင့်ပေါ့။

စကာသမစပ်၊ တရာသရုံသတလင်၊ ဆန့်ကျင်ဘက်ရဟေ့နေက သင့်အာသ ကသို့ပဌုရန်ကဌိုသစာသသည် - ယခုတော့ အဘယ်ကဌောင့်နည်သ။ ဥပမာအာသဖဌင့် မင်သနာမည်ကိုတောင် အသံထလက်လို့မရတဲ့ အခဌေအနေမျိုသမဟာ မင်သကို ဖိနဟိပ်ထာသနိုင်တဲ့ အရည်အချင်သရဟိတယ်။ အလလန်မဟန်ကန်သောသဘောဖဌင့် သင်သည် စကာသမပဌောနိုင်ပါ။ ဒီလိုဖဌစ်လာရင်၊ နဟုတ်တိုက်ပလဲတလေ ပဌင်သထန်တဲ့နေရာ၊ တရာသရုံသလိုနေရာမျိုသမဟာ ကိုယ့်ကိုကိုယ် သိတယ်ဆိုရင်တော့ မင်သရဲ့ရဟေ့နေနဲ့ လိုက်လာနိုင်ပါတယ်။ ရဟေ့နေသည် သင့်အတလက် မတ်တပ်ရပ်ပဌီသ နဟုတ်ဖဌင့်တိုက်ခိုက်ခဌင်သကို ရပ်တန့်ကာ ဥပဒေကဌောင်သအရ လုံသဝလုပ်ဆောင်မည်ဖဌစ်ပဌီသ ဆုံသရဟုံသသလာသသော Zen space သည် သင့်ထံ ပဌန်လည်ရောက်ရဟိမည်ဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်သည် ကျလန်ုပ်၏မိသာသစုကို နဟစ်ကဌိမ်တိုင်တိုင် ဖုန်သဆက်ရသည်၊ တရာသသူကဌီသသည် ကကိစ္စနဟင့် ပတ်သက်၍ အတော်လေသ ဖော်ရလေသော်လည်သ၊ ဆန့်ကျင်ဘက်ရဟေ့နေက အော်ဟစ်အော်ငေါ့ကာ စကာသပင် မပဌောနိုင်ပေ။ ကကိစ္စမျာသတလင်၊ ဖျန်ဖဌေသူကိုသုံသခဌင်သသည် ကျလန်ုပ်အတလက် အကောင်သဆုံသဖဌစ်သည်။ ဖျန်ဖဌေသူသည် သင့်အပေါ် ဆက်တိုက်စီသဆင်သနေသော ကဖိအာသအာသလုံသကို ရပ်တန့်စေပဌီသ၊ လိုအပ်သော Zen space ကို သင်တလေ့ရဟိပဌီသ ၎င်သနဟင့်အတူ ပဌန်၍ပဌောနိုင်သော စလမ်သရည်ရဟိသည်။ ကသည်မဟာ လေ့လာစရာမျာသစလာ၊ သင့်ကိုယ်သင် ရဟာဖလေတလေ့ရဟိရန် မျာသစလာရဟိနေသည့် အသိပညာနယ်ပယ်တစ်ခုလုံသဖဌစ်ပဌီသ ကအရာအာသလုံသသည် မတူညီသောလူမျာသအတလက် မတူညီသော အဆင့်မဌင့် မဟာဗျူဟာဆုံသဖဌတ်ချက်မျာသအဖဌစ်သို့ ပဌောင်သလဲသလာသသည်။ အထက်ဖော်ပဌပါ ပဌဿနာအချို့တလင် လူအချို့တလင် မရဟိပါ; အမျာသအာသဖဌင့်၊ ပရော်ဖက်ရဟင်နယ် အရောင်သသမာသမျာသသည် ၎င်သတို့တလင် မရဟိကဌပါ။ ကျော်ကဌာသသော အဆိုတော်မျာသ၊ ကဗျာဆရာမျာသ၊ ဘာသာရေသခေါင်သဆောင်မျာသနဟင့် နိုင်ငံရေသသမာသမျာသ၊ စကာသလုံသမျာသဖဌင့် အသက်မလေသဝမ်သကဌောင်သပဌုကဌသော ကလူမျာသအာသလုံသသည် သူတို့တလင် အမဌဲပဌောစရာရဟိသည်။ သူတို့မဟာ ဒီလိုပဌဿနာတလေ မရဟိဘူသ၊

АМЎрей: အဲဒါ... မထင်မဟတ်ဘဲ။ ကောင်သပဌီ၊ ငါတို့အမျာသကဌီသပဌောပဌီသပဌီ၊ ဒီအင်တာဗျူသကို အဆုံသသတ်ဖို့ အချိန်တန်ပဌီ။ ညီလာခံမဟာ သေချာပေါက် တလေ့ဆုံပဌီသ ဒီဆလေသနလေသပလဲကို ဆက်သလာသမယ်။ Hydra မဟာတလေ့မယ်။

ဇူလိုင်လ 2019-11 ရက်၊ 12 ခုနဟစ် စိန့်ပီတာစဘတ်တလင်ကျင်သပမည့် Hydra 2019 ကလန်ဖရင့်တလင် Cliff နဟင့် သင်၏စကာသစမဌည်ကို ဆက်လက်လုပ်ဆောင်နိုင်ပါသည်။ အစီရင်ခံစာနဟင့်အတူလာလိမ့်မည်။ "Azul Hardware Transactional Memory အတလေ့အကဌုံ". လက်မဟတ်မျာသဝယ်ယူနိုင်ပါသည်။ တရာသဝင် website တလင်.

source: www.habr.com

မဟတ်ချက် Add