जावास्क्रिप्ट में संस्मरण

May 08 2023
मेमोइज़ेशन एक शक्तिशाली अनुकूलन तकनीक है जिसका उपयोग कंप्यूटर प्रोग्रामिंग में उनके परिणामों को कैश करके कार्यों के निष्पादन को गति देने के लिए किया जाता है। कम्प्यूटेशनल रूप से महंगे या अक्सर बुलाए जाने वाले कार्यों से निपटने के दौरान यह विशेष रूप से उपयोगी होता है।

मेमोइज़ेशन एक शक्तिशाली अनुकूलन तकनीक है जिसका उपयोग कंप्यूटर प्रोग्रामिंग में उनके परिणामों को कैश करके कार्यों के निष्पादन को गति देने के लिए किया जाता है। कम्प्यूटेशनल रूप से महंगे या अक्सर बुलाए जाने वाले कार्यों से निपटने के दौरान यह विशेष रूप से उपयोगी होता है। जावास्क्रिप्ट, एक गतिशील और लचीली भाषा होने के नाते, मेमोइज़ेशन को लागू करने के विभिन्न तरीके प्रदान करती है। इस लेख में, हम जावास्क्रिप्ट में मेमोइज़ेशन में तल्लीन होंगे, इसकी अवधारणाओं, लाभों और विभिन्न कार्यान्वयन दृष्टिकोणों की खोज करेंगे।

इसके मूल में, मेमोइज़ेशन में महंगे फ़ंक्शन कॉल के परिणामों को संग्रहीत करना और कैश्ड परिणाम को वापस करना शामिल है जब समान इनपुट फिर से होते हैं। यह अनावश्यक संगणनाओं को समाप्त करता है और कार्यक्रम के प्रदर्शन में काफी सुधार करता है। मेमोइज़ेशन के पीछे मूल विचार को तीन चरणों में संक्षेपित किया जा सकता है:

  1. जांचें कि इनपुट के दिए गए सेट के परिणाम पहले ही कैश किए गए हैं या नहीं।
  2. यदि परिणाम मिलता है, तो उसे वापस कर दें।
  3. अन्यथा, परिणाम की गणना करें, इसे कैश करें और इसे वापस करें।

function fibonacci(n) {
  if (n <= 1) {
    return n;
  }
  
  return fibonacci(n - 1) + fibonacci(n - 2);
}

जावास्क्रिप्ट में मेमोइज़ेशन को लागू करने का एक तरीका गणना किए गए परिणामों को संग्रहीत करने के लिए कैश ऑब्जेक्ट का उपयोग करना है। यहां एक उदाहरण दिया गया है कि हम fibonacciमेमोराइजेशन को शामिल करने के लिए फ़ंक्शन को कैसे संशोधित कर सकते हैं:

function fibonacci(n, cache = {}) {
  if (n <= 1) {
    return n;
  }
  
  if (cache[n]) {
    return cache[n];
  }
  
  const result = fibonacci(n - 1, cache) + fibonacci(n - 2, cache);
  cache[n] = result;
  
  return result;
}

यह दृष्टिकोण कार्य की समय जटिलता को fibonacciघातीय से रैखिक तक सुधारता है, जिससे यह अधिक कुशल हो जाता है। जैसा कि फ़ंक्शन को पुनरावर्ती रूप से कहा जाता है, मध्यवर्ती परिणाम कैश किए जाते हैं, अनावश्यक संगणना से बचते हैं।

जावास्क्रिप्ट में संस्मरण के लिए एक अन्य दृष्टिकोण में उच्च-क्रम के कार्यों का उपयोग करना शामिल है। हम एक उच्च-क्रम का फ़ंक्शन बना सकते हैं memoizeजिसे इनपुट के रूप में एक फ़ंक्शन लेता है और उस फ़ंक्शन का एक मेमोइज्ड संस्करण देता है। यहाँ एक उदाहरण कार्यान्वयन है:

function memoize(func) {
  const cache = {};
  
  return function(...args) {
    const key = JSON.stringify(args);
    
    if (cache[key]) {
      return cache[key];
    }
    
    const result = func.apply(this, args);
    cache[key] = result;
    
    return result;
  };
}

फ़ंक्शन का उपयोग करने के लिए memoize, हम किसी भी फ़ंक्शन को लपेट सकते हैं जिसे हम याद रखना चाहते हैं। memoizeयहां एक उदाहरण दिया गया है कि हम फ़ंक्शन पर कैसे आवेदन कर सकते हैं fibonacci:

const fibonacciMemoized = memoize(fibonacci);

जावास्क्रिप्ट में संस्मरण कई लाभ प्रदान करता है। सबसे पहले, यह अनावश्यक गणनाओं को समाप्त करके उन कार्यों के प्रदर्शन में सुधार करता है जिनमें महंगी संगणनाएँ या पुनरावर्ती कॉल शामिल हैं। यह विशेष रूप से जटिल तर्क या बड़े इनपुट वाले कार्यों के लिए महत्वपूर्ण गति प्रदान कर सकता है।

दूसरे, मेमोइज़ेशन कोड की पठनीयता और रखरखाव को बढ़ाता है। कैशिंग लॉजिक को मूल फ़ंक्शन से अलग करके, कोड क्लीनर और समझने में आसान हो जाता है। इसके अतिरिक्त, यदि समान इनपुट के साथ एक ही फ़ंक्शन को कई बार कॉल किया जाता है, तो मेमोइज्ड संस्करण कैश से तुरंत परिणाम लौटाता है, समग्र जटिलता को कम करता है और कोड दक्षता को बढ़ाता है।

हालांकि, मेमोइज़ेशन चांदी की गोली नहीं है और सभी परिदृश्यों के लिए उपयुक्त नहीं हो सकता है। इनपुट स्पेस के आकार और मेमोरी उपयोग और प्रदर्शन लाभ के बीच व्यापार-बंद जैसे कारकों पर विचार करते हुए इसे विवेकपूर्ण तरीके से उपयोग किया जाना चाहिए। कम संख्या में संभावित इनपुट वाले कार्य या जिनके दुष्प्रभाव हो सकते हैं, संस्मरण के लिए अच्छे उम्मीदवार नहीं हो सकते हैं।

अंत में, जावास्क्रिप्ट में फ़ंक्शन निष्पादन को अनुकूलित करने के लिए ज्ञापन एक मूल्यवान तकनीक है। यह गणना किए गए परिणामों को कैशिंग करके और उसी इनपुट के साथ बाद की कॉल के लिए उन्हें वापस करके प्रदर्शन में सुधार करता है। जावास्क्रिप्ट मेमोइज़ेशन को लागू करने के लिए विभिन्न दृष्टिकोण प्रदान करता है, जिसमें कैश ऑब्जेक्ट्स या उच्च-क्रम के कार्यों का उपयोग करना शामिल है। मेमोइज़ेशन को उचित रूप से लागू करके, डेवलपर्स अपने कोड की दक्षता और जवाबदेही बढ़ा सकते हैं, खासकर जब कम्प्यूटेशनल रूप से गहन कार्यों से निपटते हैं।

पढ़ने के लिए धन्यवाद!

मुझे आशा है कि आपको यह लेख उपयोगी लगा होगा। यदि आपके कोई प्रश्न या सुझाव हैं, तो कृपया टिप्पणी छोड़ दें। आपकी प्रतिक्रिया मुझे बेहतर बनने में मदद करती है।

Subscribe⭐️ करना न भूलें

फेसबुक पेज :https://www.facebook.com/designTechWorld1

इंस्टाग्राम पेज :https://www.instagram.com/techd.esign/

यूट्यूब चैनल :https://www.youtube.com/@tech..Design/

चहचहाना :https://twitter.com/sumit_singh2311

गियर इस्तेमाल किया :

लैपटॉप :https://amzn.to/3yKkzaC

घड़ी:https://amzn.to/41cialm

आप रिएक्ट बुक पसंद कर सकते हैं: https://amzn.to/3Tw29nx

प्रोग्रामिंग लैंग्वेज से सम्बंधित कुछ अतिरिक्त पुस्तकें:

https://amzn.to/3z3tW5s

https://amzn.to/40n4m6O

https://amzn.to/3Jzstse

https://amzn.to/3nbl8aE

*महत्वपूर्ण अस्वीकरण - "Amazon और Amazon लोगो Amazon.com, Inc. या इसके सहयोगियों के ट्रेडमार्क हैं।"