এই আর্টিকেলে আমরা forEach() এবং reduce() মেথড দুটির পারফরম্যান্স তুলনা করব বড় আকারের সংখ্যা অ্যারেটির যোগফল বের করার ক্ষেত্রে।
পরীক্ষার পদ্ধতি
যেহেতু এখানে সরাসরি বড় অ্যারে তৈরি করা কঠিন, আমরা একই অ্যারে একাধিকবার যোগফল বের করে সময় পরিমাপ করব।
কোড উদাহরণ
const arr = [1, 4, 4, 54, 56, 54, 2, 23, 6, 54, 65, 65];
// reduce() ব্যবহার করে যোগফল
const reduceSum = arr => arr.reduce((acc, val) => acc + val);
// forEach() ব্যবহার করে যোগফল
const forEachSum = arr => {
let sum = 0;
arr.forEach(el => sum += el);
return sum;
};
// ১০০ কোটি বার পুনরাবৃত্তি
const iterations = 1000000000;
console.time('reduce');
for (let i = 0; i < iterations; i++) {
let sumReduce = reduceSum(arr);
}
console.timeEnd('reduce');
console.time('forEach');
for (let j = 0; j < iterations; j++) {
let sumForEach = forEachSum(arr);
}
console.timeEnd('forEach');
ফলাফল ও বিশ্লেষণ
reduce: 19.058s forEach: 45.204s
প্রায় ১:২.৪ অনুপাতে reduce() দ্রুত কাজ করেছে forEach()-এর চেয়ে।
কারণ
reduce()নেটিভ অপ্টিমাইজেশন পায়forEach()-এ কলব্যাক ফাংশন কলের ওভারহেড বেশিreduce()একটি একক এক্সপ্রেশন হিসেবে কাজ করে
উপসংহার
সামান্য কাজের জন্য যেকোনো একটি ব্যবহার করা যায়, কিন্তু পারফরম্যান্স ক্রিটিক্যাল অ্যাপ্লিকেশনে reduce() বা for লুপ ভালো।