आधुनिक जावास्क्रिप्ट इंजन का उपयोग करने के इनलाइन कैशिंग और अनुकूली रखता तकनीक उत्पन्न कोड पर गतिशील प्रेषण के प्रभाव को कम करने के लिए।
हम वी 8 के बारे में तो तथ्य वस्तु या मनाया जाता है, न कि उसके छिपे हुए कक्षा में एन्कोड किया गया है कि क्या बोल रहे हैं। दोनों इनलाइन कैश स्टब्स और अनुकूलित कोड पहले से ही एक वस्तु एक की उम्मीद आकार है या नहीं यह निर्धारित करने के लिए कुछ उम्मीद मूल्य के खिलाफ छिपा वर्ग की जाँच करें। एक ही चेक इस तथ्य के बारे में जानकारी देता है कि वस्तु देखी गई है या नहीं। तो कोड पथ पर कुछ भी नहीं बदलता जो गैर-मनाई गई वस्तुओं के साथ काम करता है। वस्तु के छिपे वर्ग एक मनाया बिट सेट के साथ, कोई दूसरा स्विच किया गया है: आप Runtime_SetIsObserved
पढ़ यह देखने के लिए कर सकते हैं वस्तु निरीक्षण करने के लिए शुरू में यह आकार बदल रहा है की तरह ही व्यवहार किया जाता है।
इसी तरह की तर्क प्रणाली के उन हिस्सों पर लागू होती है जो अनुकूलित कोड में गार्ड को छोड़ देते हैं और इसके बजाय "आकृति" धारणाओं पर निर्भर कोड को हटा देते हैं: एक बार ऑब्जेक्ट को सभी अनुकूलित कोड को देखा जाता है, इस धारणा के आधार पर कि इस तरह की ऑब्जेक्ट नहीं देखी गई थी deoptimized हो। इस प्रकार अनावश्यक वस्तुओं के लिए फिर से कोई कीमत नहीं दी जाती है।
जिसके अनुसार, वी 8 में Object.observe
का वर्तमान क्रियान्वयन मनाया वस्तुओं एक उच्च कीमत का भुगतान क्योंकि इससे उन्हें को सामान्य (उनमें शब्दकोश प्रतिनिधित्व में बदल जाता है) और प्रेक्षण रिकॉर्डिंग के लिए क्रम प्रणाली के माध्यम से दौर यात्राएं की आवश्यकता है बनाता है। लेकिन बाद में इस लागत को कम करने में कोई अंतर्निहित तकनीकी कठिनाइयां नहीं हैं।
स्रोत
2013-02-27 16:51:50
"* यह निर्धारित करना संभव नहीं है कि किसी दिए गए ऑब्जेक्ट में अधिसूचनाएं सेट हों या नहीं?" - क्यों? – Bergi
@ बर्गि आप इसे कैसे करेंगे? संहिता का मतलब कोड चलाने या किसी ऑब्जेक्ट का निरीक्षण किए बिना। – usr