কম্পিউটার টিউটোরিয়াল

forEach() এবং reduce() তুলনা - বড় অ্যারে যোগফল বের করার জন্য JavaScript

এই আর্টিকেলে আমরা 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 লুপ ভালো।

  1. জাভাস্ক্রিপ্টে সংখ্যাগুলোর অ্যারেতে স্বরবর্ণের ASCII কোড থাকা কিনা যাচ্চ করা

  2. জাভাস্ক্রিপ্টে স্ট্রিং সংখ্যা ও পূর্ণসংখ্যা মিশ্র অ্যারের যোগফল বের করা

  3. জাভাস্ক্রিপ্টে অ্যারেতে পূর্ণসংখ্যা ও স্ট্রিং সংখ্যার পার্থক্য বের করা

  4. জাভাস্ক্রিপ্টে সংখ্যার অ্যারের ভেরিয়েন্স (Variance) হিসাব করা