জাভাস্ক্রিপ্টে ভারী অপারেশনের পুনরাবৃত্তি অপ্টিমাইজেশন
পূর্ববর্তী পাঠে, ফাংশনের পুনরাবৃত্তি কল আসলে খুব কম সময় নেয় এবং আমাদের অপ্টিমাইজেশন খুব বেশি সাশ্রয় করবে না। তবে, পরিস্থিতি আরও খারাপ হবে যদি আমরা একাধিক বার একটি "ভারী" ফাংশন কল করি, যা পর্যাপ্ত দীর্ঘ সময় ধরে চলে।
ধরুন, উদাহরণস্বরূপ, আমাদের একটি ফাংশন আছে যা সংখ্যার ভাজক খুঁজে পায়:
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;
}