Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

सरणी योग:जावास्क्रिप्ट में लूप बनाम ES6 विधियों के लिए पुनरावृत्ति बनाम तुलना करना

<घंटा/>

मान लीजिए, हमारे पास संख्या प्रविष्टियों की एक बड़ी संख्या के साथ एक सरणी है और समय की तुलना करने के लिए आवश्यक है रिकर्सन में लगने वाला समय बनाम एक साधारण लूप में लगने वाला समय बनाम ES6 फ़ंक्शन सरणी की सभी प्रविष्टियों को समेटने में लगता है यानी रिकर्सन बनाम लूप बनाम ES6 फ़ंक्शन ।

यहां, एक बड़े सरणी का अनुकरण करने के लिए हम अपेक्षाकृत छोटी सरणी पर बड़ी संख्या में (10000000 के क्रम में) पुनरावृति करेंगे। हमारा मुख्य उद्देश्य सरणी को सारांशित करने में प्रत्येक विधि द्वारा लिए जाने वाले समय का एक मोटा अनुपात रखना है।

भाग 1:पुनरावर्ती दृष्टिकोण

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

भाग 2:लूपिंग दृष्टिकोण

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

भाग 3:ES6 दृष्टिकोण

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

आइए अब कंसोल मेथड्सटाइम () और टाइमएंड () -

की मदद से इन तीन फंक्शन के प्रदर्शन की तुलना करें।

उदाहरण

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 फ़ंक्शन किसी भी अन्य दृष्टिकोण की तुलना में अधिक कुशल और प्रदर्शनकारी हैं।

नोट − बेहतर परिणामों के लिए, ऑनलाइन आईडीई में इस कोड का परीक्षण करने से बचें।


  1. जावास्क्रिप्ट में एक ऐरे के माध्यम से लूप के लिए कथन में कैसे उपयोग करें?

    for...in लूप का उपयोग किसी वस्तु के गुणों को लूप करने के लिए किया जाता है। आइए एक सरणी के माध्यम से लूप करने के लिए एक for…in कथन देखें। उदाहरण आप निम्न कोड को चलाने का प्रयास कर सकते हैं ताकि आप सीख सकें कि किसी सरणी के माध्यम से for…in कथन को लूप में कैसे उपयोग किया जाए - लाइव डेमो <html> &n

  1. जावास्क्रिप्ट बेसिक ऐरे मेथड्स

    कुछ बुनियादी जावास्क्रिप्ट सरणी विधियाँ हैं - विधि विवरण Array.push() सरणी के अंत में तत्वों को जोड़ने के लिए। Array.pop() सरणी के अंत से तत्वों को हटाने के लिए। Array.unshift() सरणी के सामने तत्वों को जोड़ने के लिए Array.shift() सरणी के सामने से तत्वों को हटाने के लिए। Array.splice() ब्य

  1. जावास्क्रिप्ट में किसी सरणी के लिए (सकारात्मक/नकारात्मक योग की संख्या) का मान लौटाना

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो पूर्णांक (सकारात्मक और नकारात्मक) की एक सरणी लेता है और हमारे फ़ंक्शन को एक सरणी वापस करनी चाहिए, जहां पहला तत्व सकारात्मक संख्याओं की गणना है और दूसरा तत्व ऋणात्मक संख्याओं का योग है। उदाहरण निम्नलिखित कोड है - const arr = [1, 2, 1, -2, -4, 2, -6,