JavaScript တွင် မှတ်ဉာဏ် အသုံးပြုမှု အကောင်းဆုံးဖြစ်အောင် ပြင်ဆင်ခြင်း
ဖန်တီးထားသော ကိန်းရှင်အားလုံးသည် ကွန်ပျူတာ၏ လည်ပတ်မှတ်ဉာဏ် (RAM) ထဲတွင် သိမ်းဆည်းထားပါသည်။ တစ်ခါတစ်ရံ တွေးမကြည့်ဘဲ ကုဒ်ရေးသားခြင်းသည် အသုံးပြုသော မှတ်ဉာဏ်ပမာဏကို ရုတ်တရက် များပြားလာစေနိုင်ပါသည်။
ဥပမာတစ်ခုဖြင့် ကြည့်ရှုကြပါစို့။
ကျွန်ုပ်တို့ရှေ့တွင် ကိန်းပြည့်များ 1 မှ
100000000 အထိ ပေါင်းလဒ်ကို ရှာရန်
တာဝန်ရှိသည်ဟု ယူဆပါ။
ကျွန်ုပ်တို့တွင် ပေးထားသော အတိုင်းအတာအတွင်းရှိ
ကိန်းပြည့်များဖြင့် ခင်းကျင်းမှု (array) တစ်ခုကို
ဖြည့်ပေးသော လုပ်ဆောင်ချက် (function) တစ်ခု ရှိသည်ဟု
ဆိုကြပါစို့။
function fillArr(a, b) {
let res = [];
for (let i = a; i <= b; i++) {
res.push(i);
}
return res;
}
ထို့အပြင် ကျွန်ုပ်တို့တွင် ခင်းကျင်းမှု (array) ၏ ဒြပ်စင်များ ပေါင်းလဒ်ကို ရှာဖွေပေးသော လုပ်ဆောင်ချက် (function) တစ်ခု ရှိသည်ဟု ဆိုကြပါစို့။
function getSum(arr) {
let sum = 0;
for (let elem of arr) {
sum += elem
}
return sum;
}
ဤလုပ်ဆောင်ချက်များကို ပေါင်းစပ်အသုံးပြုခြင်းဖြင့် ပေးထားသော တာဝန်ကို အလွယ်တကူ ဖြေရှင်းနိုင်ပါသည်။
let sum = getSum(fillArr(1, 100000000));
ကျက်သရေရှိသော အဖြေတစ်ခု ရရှိခဲ့ပါသည်။ သို့သော် ၎င်းတွင် ပြဿနာတစ်ခုရှိပါသည်။ ၎င်းသည် လည်ပတ်မှတ်ဉာဏ် (RAM) အမြောက်အမြားကို သုံးစွဲပါသည်။
တွက်ချက်ကြည့်ကြပါစို့။ fillArr လုပ်ဆောင်ချက်သည်
ကိန်းပြည့် 100000000 ခုပါသော ခင်းကျင်းမှု (array)
တစ်ခုကို ဖန်တီးပါသည်။
JavaScript သည် ကိန်းတစ်ခုအတွက် ဘိုက် 2 ခု
ချန်လှပ်သည်ဟု ဆိုကြပါစို့။
ထိုအခါ ကျွန်ုပ်တို့၏ ခင်းကျင်းမှု (array) ကို
သိမ်းဆည်းရန် ဘိုက် 200000000 ခု လိုအပ်မည်။
ဆိုလိုသည်မှာ လည်ပတ်မှတ်ဉာဏ် (RAM) မီဂါဘိုက်
200 ခန့် လိုအပ်မည်ဖြစ်သည်။
သို့သော် တကယ်တမ်းတွင် JavaScript တွင် ခင်းကျင်းမှု (array) ကို သိမ်းဆည်းရာတွင် အလွန်ကြီးမားသော အပိုအသုံးစရိတ်များ ရှိသောကြောင့် လည်ပတ်မှတ်ဉာဏ် (RAM) ကို ထို့ထက်မက ပိုမိုလိုအပ်ပါလိမ့်မည်။
ပြဿနာကို နားလည်သွားပါက၊ တာဝန်ကို ဖြေရှင်းပေးပြီး လည်ပတ်မှတ်ဉာဏ် (RAM) ကို လက်တွေ့အားဖြင့် မသုံးစွဲသော လုပ်ဆောင်ချက် (function) တစ်ခုကို အလွယ်တကူ ပြုလုပ်နိုင်ပါသည်။
function getNumsSum(max) {
let sum = 0;
for (let i = 1; i <= max; i++) {
sum += i;
}
return sum;
}
ကျွန်ုပ်တို့၏ လုပ်ဆောင်ချက်ကို အသုံးပြု၍ တာဝန်ကို ဖြေရှင်းကြပါစို့။
let sum = getNumsSum(100000000);
ပရိုဂရမ်မာတစ်ဦးရှေ့တွင် ပေးထားသော
အပိုင်းအခြားအတွင်း တည်ရှိပြီး 7 ဖြင့်
အကြွင်းမရှိ စားလဒ်ရသော ကိန်းများ၏
အရေအတွက်ကို ရှာရန် တာဝန်ရှိခဲ့သည်။
သူသည် ၎င်းကို အောက်ပါအတိုင်း ဖြေရှင်းခဲ့သည်။
let arr = [];
for (let i = 0; i <= 1000; i++) {
if (i % 7 == 0) {
arr.push(i);
}
}
console.log(arr.length);
ဤကုဒ်တွင် မှားယွင်းနေသည်မှာ အဘယ်နည်း ရှင်းပြပါ။ ကုဒ်ကို ပိုမိုအကောင်းဆုံးဖြစ်အောင် ပြန်လည်ပြင်ဆင်ပါ။
ပရိုဂရမ်မာတစ်ဦးရှေ့တွင် ကိန်းတစ်ခု၏ ဆခွဲကိန်းများ ပေါင်းလဒ်ကို ရှာရန် တာဝန်ရှိခဲ့သည်။ သူသည် ၎င်းကို အောက်ပါအတိုင်း ဖြေရှင်းခဲ့သည်။
function getDivisors(num) {
let res = [];
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
res.push(i);
}
}
return res;
}
function getSum(arr) {
let sum = 0;
for (let elem of arr) {
sum += elem
}
return sum;
}
let sum = getSum(getDivisors(320));
console.log(sum);
ဤကုဒ်တွင် မှားယွင်းနေသည်မှာ အဘယ်နည်း ရှင်းပြပါ။ ကုဒ်ကို ပိုမိုအကောင်းဆုံးဖြစ်အောင် ပြန်လည်ပြင်ဆင်ပါ။