यह प्रोजेक्ट महंगे फ़ंक्शन कॉल के परिणामों को कैश करके जावास्क्रिप्ट या टाइपस्क्रिप्ट परियोजनाओं में प्रदर्शन में सुधार के लिए एक मेमोइज़ फ़ंक्शन प्रदान करता है। याद रखने से, समान तर्कों के साथ बार-बार कॉल करने से कैश्ड परिणाम वापस आ जाएगा, निष्पादन में तेजी आएगी।
यह मॉड्यूल रिएक्ट के यूज़मेमो हुक की तरह काम करता है लेकिन रिएक्ट की आवश्यकता नहीं है। आप किसी भी ढांचे या शुद्ध जावास्क्रिप्ट परियोजनाओं का उपयोग कर सकते हैं
एनपीएम पैकेज
जीथब
निम्नलिखित प्रक्रिया में, जब 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 |
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3