प्रदर्शन में कुछ मसाला लाने के लिए। इस थ्रेड बॉलो की जाँच करें
https://github.com/googleapis/google-api-nodejs-client/issues/375
डिलीट ऑपरेटर के उपयोग से V8 छिपे हुए क्लास पैटर्न के लिए प्रदर्शन नकारात्मक प्रभाव पड़ता है। सामान्य तौर पर यह अनुशंसित है कि इसका उपयोग न करें।
वैकल्पिक रूप से, अपने स्वयं के गुणों को हटाने के लिए, हम उन गुणों के बिना एक नई ऑब्जेक्ट कॉपी बना सकते हैं (उदाहरण के लिए लॉश का उपयोग करते हुए):
_.ओमिट (ओ, 'प्रोप', 'प्रोप 2')
या यहां तक कि संपत्ति के मान को शून्य या अपरिभाषित करने के लिए परिभाषित करें (जो कि JSON पर क्रमिक रूप से नजरअंदाज कर दिया गया है):
o.prop = अपरिभाषित
आप विनाशकारी तरीके का भी उपयोग कर सकते हैं
const {remov1, remov2, ...new} = old;
old = new;
और अधिक व्यावहारिक छूट:
this._volumes[this._minCandle] = undefined;
{
const {[this._minCandle]: remove, ...rest} = this._volumes;
this._volumes = rest;
}
जैसा कि आप देख सकते हैं आप [somePropsVarForDynamicName]: scopeVarName
गतिशील नामों के लिए वाक्यविन्यास का उपयोग कर सकते हैं । और आप सभी कोष्ठक (नए ब्लॉक) में रख सकते हैं, इसलिए बाकी कचरा इसके बाद एकत्र किया जाएगा।
यहाँ एक परीक्षण:
कार्यकारी:
या हम कुछ फ़ंक्शन के साथ जा सकते हैं जैसे
function deleteProps(obj, props) {
if (!Array.isArray(props)) props = [props];
return Object.keys(obj).reduce((newObj, prop) => {
if (!props.includes(prop)) {
newObj[prop] = obj[prop];
}
return newObj;
}, {});
}
टाइपस्क्रिप्ट के लिए
function deleteProps(obj: Object, props: string[]) {
if (!Array.isArray(props)) props = [props];
return Object.keys(obj).reduce((newObj, prop) => {
if (!props.includes(prop)) {
newObj[prop] = obj[prop];
}
return newObj;
}, {});
}
उपयोग:
let a = {propH: 'hi', propB: 'bye', propO: 'ok'};
a = deleteProps(a, 'propB');
a = deleteProps(a, ['propB', 'propO']);
इस तरह एक नई वस्तु बनाई जाती है। और वस्तु की तेज संपत्ति रखी जाती है। जो महत्वपूर्ण या बात हो सकती है। यदि मैपिंग और ऑब्जेक्ट को कई बार एक्सेस किया जाएगा।
साथ ही undefined
साथ जाना भी एक अच्छा तरीका हो सकता है। जब आप इसे बर्दाश्त कर सकते हैं। और कुंजियों के लिए आप मूल्य की जांच भी कर सकते हैं। उदाहरण के लिए सभी सक्रिय कुंजी प्राप्त करने के लिए आप कुछ ऐसा करते हैं:
const allActiveKeys = Object.keys(myObj).filter(k => myObj[k] !== undefined);
const allActiveKeys = Object.keys(myObj).filter(k => myObj[k]);
अनिर्धारित बड़ी सूची के लिए अनुकूल नहीं है। या कई सहारा के साथ समय के साथ विकास अंदर आने के लिए। जैसे-जैसे मेमोरी का उपयोग बढ़ता रहेगा और यह कभी साफ नहीं होगा। तो यह उपयोग पर निर्भर करता है। और बस एक नई वस्तु का निर्माण अच्छा तरीका लगता है।
तब में Premature optimization is the root of all evil
किक करेगा। इसलिए आपको व्यापार बंद के बारे में पता होना चाहिए। और क्या जरूरत है और क्या नहीं है।
लॉश के बारे में _.omit () के बारे में ध्यान दें
इसे संस्करण 5 से हटा दिया गया है। आप इसे रेपो में नहीं ढूंढ सकते। और यहां एक मुद्दा जो इसके बारे में बात करता है।
https://github.com/lodash/lodash/issues/2930
v8
आप इसे देख सकते हैं जो एक अच्छी रीडिंग है https://v8.dev/blog/fast-properties