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

JavaScript-এ অ্যারে সম: রিকার্সন vs ফর লুপ vs ES6 মেথড তুলনা


মান লিজিয়ে, আমাদের কাছে একটি বিশাল নম্বর এন্ট্রি دار অ্যারে আছে এবং আমাদের রিকার্সন, সিম্পল লুপ, এবং ES6 ফাংশন - এই তিনটির সময় তুলনা করতে হবে অ্যারের সব এন্ট্রি যোগ করার ক্ষেত্রে।

এখানে, একটি বড় অ্যারে সিমুলেট করার জন্য আমরা একটি অপেক্ষাকৃত ছোট অ্যারে যেন ১০০০০০০০ বার ইটারেট করব। আমাদের মূল লক্ষ্য হলো তিনটি মেথডের টাইম রেশিও খুব মোটামুটি পাওয়া।

অংশ ১: রিকার্সিভ অ্যাপ্রোচ

const recursiveSum = (arr, len = 0, sum = 0) => {    if(len < arr.length){       return recursiveSum(arr, len+1, sum + arr[len]);    };    return sum; };

অংশ ২: লুপিং অ্যাপ্রোচ

const loopingSum = arr => {    let sum = 0;    for(let i = 0; i < arr.length; i++){       sum += arr[i];    };    return sum; };

অংশ ৩: ES6 অ্যাপ্রোচ

const ES6Sum = arr => arr.reduce((acc, val) => acc+val);

এখন console.time() এবং console.timeEnd() মেথড দিয়ে এই তিনটি ফাংশনের পারফরম্যান্স তুলনা করি:

উদাহরণ

const ITERATIONS = 100000000; const arr = [12, 65, 87, 2, 23, 87, 4, 66, 34, 89, 89, 32, 4]; const recursiveSum = (arr, len = 0, sum = 0) => {    if(len < arr.length){       return recursiveSum(arr, len+1, sum + arr[len]);    };    return sum; }; const loopingSum = arr => {    let sum = 0;    for(let i = 0; i < arr.length; i++){       sum += arr[i];    };    return sum; }; const ES6Sum = arr => arr.reduce((acc, val) => acc+val); console.time('recursive approach'); for(let k = 0; k < ITERATIONS; k++){    recursiveSum(arr); }; console.timeEnd('recursive approach'); console.time('looping approach'); for(let l = 0; l < ITERATIONS; l++){    loopingSum(arr); }; console.timeEnd('looping approach'); console.time('ES6 approach'); for(let m = 0; m < ITERATIONS; m++){    loopingSum(arr); }; console.timeEnd('ES6 approach');

এখন সম্ভাব্য কনসোল আউটপুট দেখি:

দ্রষ্টব্য - এটি শুধু একটি সম্ভাব্য কনসোল আউটপুট, কারণ যেকোনো কোডের পারফরম্যান্স সিস্টেমের ওপর ভরীভাবে নির্ভরশীল। কিন্তু এই তিনটি ফাংশনয়ে লেগেছে টাইমের রেশিও প্রায় সব সিস্টেমে একই থাকবে।

recursive approach: 13.774s looping approach: 3.138s ES6 approach: 2.493s

এখানে আমরা একটি নির্দিষ্ট মেশিনে তিনটি অ্যাপ্রোচের জন্য বড় সংখ্যক ইটারেশনের সময় দেখতে পাচ্ছি। এটা দেখায় যে ছোট এবং বেসিক ক্যালকুলেশনের জন্য অ্যারেতে, ES6 ফাংশনগুলো অন্য যেকোনো অ্যাপ্রোচ চেয়ে বেশি ইফিশিয়েন্ট এবং পারফরম্যান্ট।

দ্রষ্টব্য - ভালো রেজাল্টের জন্য, অনলাইন IDE-তে এই কোড টেস্ট করা উচিত নয়।


  1. জাভাস্ক্রিপ্টে for...in স্টেটমেন্ট ব্যবহার করে অ্যারে লুপ করার উপায়

  2. জাভাস্ক্রিপ্ট বেসিক অ্যারে মেথড: push, pop, shift, unshift, splice

  3. জাভাস্ক্রিপ্টে অ্যারেতে সংখ্যাগুলোর যোগফল জোড় নাকি বিজোড় যাচ্চ করা

  4. জাভাস্ক্রিপ্টে অ্যারে থেকে পজিটিভ সংখ্যার কাউন্ট ও নেগেটিভ সংখ্যার যোগফল বের করা