"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > बड़े जावास्क्रिप्ट फ़ंक्शंस के पुन: निष्पादन को रोकता है जिन्हें एक ही पैरामीटर के साथ एक बार संसाधित किया गया है।

बड़े जावास्क्रिप्ट फ़ंक्शंस के पुन: निष्पादन को रोकता है जिन्हें एक ही पैरामीटर के साथ एक बार संसाधित किया गया है।

2024-08-29 को प्रकाशित
ब्राउज़ करें:553

Prevents re-execution of large javascript functions that have been processed once with the same parameter.

स्मृति

समान मापदंडों के साथ निष्पादित कार्यों के लिए कैश मैकेनिज्म (मेमोइज़र) (केवल 1.14 KB)

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

यह मॉड्यूल रिएक्ट के यूज़मेमो हुक की तरह काम करता है लेकिन रिएक्ट की आवश्यकता नहीं है। आप किसी भी ढांचे या शुद्ध जावास्क्रिप्ट परियोजनाओं का उपयोग कर सकते हैं

एनपीएम पैकेज
जीथब

विशेषताएँ

  • फ़ंक्शन मेमोइज़ेशन: समान तर्कों के साथ फ़ंक्शन कॉल के कैश परिणाम।
  • निर्भरता ट्रैकिंग: निर्भरता बदलने पर कैश को अपडेट करता है।
  • लचीलापन: जावास्क्रिप्ट और टाइपस्क्रिप्ट दोनों परियोजनाओं में प्रयोग योग्य।
  • सीपीयू-गहन संचालन या जटिल गणनाओं के लिए सबसे अच्छा समाधान
  • डिस्कनेक्ट किए गए फ़ंक्शन मेमोरी से हटा दिए जाते हैं। इस फ़ंक्शन से संबंधित कैश भी हटा दिए गए हैं।
  • वीकमैप आधारित कैश स्टोर
  • WeakMap उन तरीकों को डिस्कनेक्ट करता है जो कमजोर संदर्भ लिंक के साथ संचार नहीं कर सकते हैं और कचरा संग्रहकर्ता को किक करने के लिए ट्रिगर करते हैं

उपयोग का मामला

डिप्स पैरामीटर के बिना

निम्नलिखित प्रक्रिया में, जब concatPhoneNumber विधि को समान पैरामीटर के साथ दोबारा कॉल किया जाता है, तो फ़ंक्शन दोबारा निष्पादित नहीं होता है, यह कैश से परिणाम प्राप्त करता है।

import memofy from "memofy";

const concatPhoneNumber = (extension, number) => {
  // Heavy calculation
  // return result
};

const memoizedConcatPhoneNumber = memofy(concatPhoneNumber, []);

memoizedConcatPhoneNumber(90, 555); // Runs concatPhoneNumber when first run
memoizedConcatPhoneNumber(90, 555); // get value from cache

memoizedConcatPhoneNumber(90, 552); // Runs concatPhoneNumber because params is change

डिप्स पैरामीटर के साथ

यदि आप चाहते हैं कि विधि कुछ निर्भरता के अनुसार उसी पैरामीटर के साथ फिर से चले, तो आप निम्नानुसार डिप्स पैरामीटर पास कर सकते हैं।

import memofy from "memofy";

const taxRatio = 0.5;
const product = { title: "Test product", price: 10 };

const calculateTax = () => {
  // Calculate tax by product price
  // Heavy calculation
  return taxRatio * product.price;
};

const memoizedConcatPhoneNumber = memofy(calculateTax, [product, taxRatio]);

calculatedPrice = calculateTax(); // Runs concatPhoneNumber when first run

product.price = 40;
let calculatedPrice = calculateTax(); // Runs concatPhoneNumber because product dep changed

taxRatio = 0.8;
calculatedPrice = calculateTax(); // Runs concatPhoneNumber because taxRatio changed

प्रदर्शन परिणाम

एक जटिल फ़ंक्शन पर प्रदर्शन का परिणाम होता है जो अभाज्य संख्याओं को अलग करता है। प्रदर्शन परीक्षण

मामला एमएस
पहला निष्पादन समय (कोई कैशिंग नहीं) > 52.08 एमएस
दूसरा निष्पादन समय (कैशिंग)
और बाद में निष्पादन (कैशिंग)

परीक्षण कवरेज परिणाम

परीक्षण सभी मामलों और सभी पैरामीटर प्रकारों के लिए लिखे गए थे। परीक्षण

फ़ाइल % Stmts % शाखा % फ़ंक्शंस % लाइनें अनकवर्ड लाइन #s
सभी फाइलें 100 100 100 100 0
lib 100 100 100 100 0
index.ts 100 100 100 100 0
lib/store 100 100 100 100 0
CacheStore.ts 100 100 100 100 0
DepsStore.ts 100 100 100 100 0
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/ahmetilhn/prevents-re-execution-of-large-javascript-functions-that-have-been-processed-once-with-the-same-parameter-1ici? 1 क्योंकि यदि कोई उल्लंघन है, तो कृपया उसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3