Optimizarea repetării operațiilor grele în JavaScript
În lecția precedentă, apelurile repetate ale funcțiilor de fapt ocupă foarte puțin timp și optimizarea noastră va economisi nu foarte mult. Cu toate acestea, va fi mult mai rău dacă vom face de mai multe ori apelul unei funcții "grele" care se execută suficient de mult timp.
Să presupunem, de exemplu, că avem o funcție care găsește divizorii unui număr:
javascriptfunction getDivisorsSum(num) {
let res = 0;
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
res += i;
}
}
return res;
}
Evident, această funcție este suficient de "grele". Prin urmare, va fi o idee proastă să scriem un astfel de cod:
javascriptlet num = 123456;
if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
Mai bine, desigur, este să executăm operația "grele" o singură dată și să scriem rezultatul într-o variabilă, apoi să folosim această variabilă în locurile necesare:
javascriptlet num = 123456;
let sum = getDivisorsSum(num);
if (sum >= 10 && sum <= 100) {
console.log('+++');
} else {
console.log('---');
}
Задание 1
Optimizați codul de mai jos:
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;
}