Smagu operāciju atkārtošanas optimizācija JavaScript
Iepriekšējā nodarbībā atkārtoti funkciju izsaukumi patiesībā aizņem ļoti maz laika un mūsu optimizācija ietaupīs ne pārāk daudz. Tomēr, viss būs daudz sliktāk, ja mēs vairākas reizes izsauksim "smago" funkciju, kas izpildās pietiekami ilgu laiku.
Pieņemsim, ka mums piemēram, ir funkcija, kas atrod skaitļa dalītājus:
function getDivisorsSum(num) {
let res = 0;
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
res += i;
}
}
return res;
}
Acīmredzot, šī funkcija ir pietiekami "smaga". Tāpēc slikta ideja būtu uzrakstīt šādu kodu:
let num = 123456;
if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
Labāk, protams, izpildīt "smago" operāciju vienu reizi un rezultātu ierakstīt mainīgajā, un tad izmantot šo mainīgo vajadzīgajās vietās:
let num = 123456;
let sum = getDivisorsSum(num);
if (sum >= 10 && sum <= 100) {
console.log('+++');
} else {
console.log('---');
}
Optimizējiet zemāk redzamo kodu:
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;
}