Optimalisering van herhaling van swaar operasies in JavaScript
In die vorige les neem die herhaalde oproepe van funksies eintlik baie min tyd en ons optimalisering sal nie baie spaar nie. Dit sal egter baie erger wees as ons verskeie kere 'n "swaar" funksie oproep wat lank neem om uit te voer.
Laat ons byvoorbeeld 'n funksie hê wat die delers van 'n getal vind:
function getDivisorsSum(num) {
let res = 0;
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
res += i;
}
}
return res;
}
Dit is duidelijk dat hierdie funksie redelik "swaar" is. Daarom sal dit 'n slegte idee wees om die volgende kode te skryf:
let num = 123456;
if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
Dit is beter om natuurlik die "swaar" operasie een keer uit te voer en die resultaat in 'n veranderlike te stoor, en dan daardie veranderlike in die nodige plekke te gebruik:
let num = 123456;
let sum = getDivisorsSum(num);
if (sum >= 10 && sum <= 100) {
console.log('+++');
} else {
console.log('---');
}
Optimaliseer die onderstaande kode:
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;
}