जावास्क्रिप्ट में भारी ऑपरेशनों के दोहराव का ऑप्टिमाइजेशन
पिछले पाठ में फ़ंक्शन के बार-बार कॉल वास्तव में बहुत कम समय लेते हैं और हमारा ऑप्टिमाइजेशन बहुत अधिक बचत नहीं करेगा। हालाँकि, स्थिति तब बहुत खराब हो जाएगी जब हम कई बार एक "भारी" फ़ंक्शन को कॉल करेंगे, जिसे पूरा करने में काफी लंबा समय लगता है।
उदाहरण के लिए, मान लीजिए कि हमारे पास एक फ़ंक्शन है जो संख्या के भाजक ढूंढती है:
function getDivisorsSum(num) {
let res = 0;
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
res += i;
}
}
return res;
}
जाहिर है, यह फ़ंक्शन काफी "भारी" है। इसलिए इस तरह का कोड लिखना बुरा विचार होगा:
let num = 123456;
if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
बेहतर होगा, निश्चित रूप से, "भारी" ऑपरेशन को एक बार करें और परिणाम को एक वेरिएबल में सहेजें, और फिर उस वेरिएबल का उपयोग आवश्यक स्थानों पर करें:
let num = 123456;
let sum = getDivisorsSum(num);
if (sum >= 10 && sum <= 100) {
console.log('+++');
} else {
console.log('---');
}
नीचे दिए गए कोड को ऑप्टिमाइज़ करें:
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;
}