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:
javascriptfunction 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:
javascriptlet 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:
javascriptlet num = 123456;
let sum = getDivisorsSum(num);
if (sum >= 10 && sum <= 100) {
console.log('+++');
} else {
console.log('---');
}
Задание 1
Optimaliseer die onderstaande kode:
javascriptlet 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;
}