JavaScriptda Og'ir Amallarni Takrorlashni Optimallashtirish
Oldingi darsda funktsiyalarni takroriy chaqirishlar aslida juda oz vaqt oladi va bizning optimizatsiyamiz juda ko'p tejamaydi. Biroq, hammasi yomonroq bo'ladi, agar biz bir necha marta "og'ir" funktsiyani chaqirsak, u yetarlicha uzoq vaqt bajariladi.
Masalan, bizda sonning bo'luvchilarini topadigan funktsiya bor deylik:
function getDivisorsSum(num) {
let res = 0;
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
res += i;
}
}
return res;
}
Shubhasiz, bu funktsiya yetarlicha "og'ir". Shuning uchun quyidagi kodni yozish yomon fikr bo'ladi:
let num = 123456;
if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
Albatta, "og'ir" amalni bajarish yaxshiroq bir marta va natijani o'zgaruvchiga yozing, keyin esa kerakli joylarda shu o'zgaruvchidan foydalaning:
let num = 123456;
let sum = getDivisorsSum(num);
if (sum >= 10 && sum <= 100) {
console.log('+++');
} else {
console.log('---');
}
Quyida keltirilgan kodni optimallashtiring:
let num = 1233456789;
if (getSumSquare(num) >= 10 && getSumSquare(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
function getSumSquare(num) {
let digits = String(num).split('');
let sum = 0;
for (let digit of digits) {
sum += digit ** 2;
}
return sum;
}