जावास्क्रिप्ट में Arrays और ऑब्जेक्ट्स (विशेष रूप से Google V8) से जुड़ा प्रदर्शन दस्तावेज़ के लिए बहुत दिलचस्प होगा। मुझे इंटरनेट पर कहीं भी इस विषय पर कोई व्यापक लेख नहीं मिला।
मैं समझता हूं कि कुछ ऑब्जेक्ट्स अपने अंतर्निहित डेटा संरचना के रूप में कक्षाओं का उपयोग करते हैं। यदि बहुत सारे गुण हैं, तो इसे कभी-कभी हैश तालिका के रूप में माना जाता है?
मैं यह भी समझता हूं कि कभी-कभी Arrays को C ++ Arrays (यानी तेजी से यादृच्छिक अनुक्रमण, धीमी गति से विलोपन और आकार बदलने) के समान माना जाता है। और, अन्य समय में, उन्हें वस्तुओं की तरह अधिक व्यवहार किया जाता है (तेजी से अनुक्रमण, तेज सम्मिलन / हटाने, अधिक स्मृति)। और, शायद कभी-कभी उन्हें लिंक की गई सूचियों के रूप में संग्रहीत किया जाता है (यानी शुरुआत / अंत में धीमी यादृच्छिक अनुक्रमण, तेज निष्कासन / सम्मिलन)
जावास्क्रिप्ट में एरे / ऑब्जेक्ट पुनर्प्राप्ति और जोड़तोड़ का सटीक प्रदर्शन क्या है? (विशेष रूप से Google V8 के लिए)
अधिक विशेष रूप से, इसका प्रदर्शन प्रभाव क्या है:
- किसी वस्तु में गुण जोड़ना
- किसी वस्तु से संपत्ति निकालना
- किसी वस्तु में संपत्ति का अनुक्रमण करना
- किसी ऐरे में आइटम जोड़ना
- किसी ऐरे से कोई आइटम निकालना
- किसी ऐरे में किसी वस्तु का अनुक्रमण करना
- कॉलिंग Array.pop ()
- कॉलिंग Array.push ()
- कॉलिंग Array.shift ()
- कॉलिंग Array.unshift ()
- कॉलिंग Array.slice ()
अधिक जानकारी के लिए किसी भी लेख या लिंक की सराहना की जाएगी, साथ ही साथ। :)
संपादित करें: मैं वास्तव में सोच रहा हूं कि कैसे जावास्क्रिप्ट सरणियों और ऑब्जेक्ट्स हुड के नीचे काम करते हैं। इसके अलावा, V8 इंजन किस संदर्भ में "स्विच-ओवर" को किसी अन्य डेटा संरचना में जानता है?
उदाहरण के लिए, मान लीजिए कि मैं एक सरणी बनाता हूं ...
var arr = [];
arr[10000000] = 20;
arr.push(21);
यहाँ वास्तव में क्या हो रहा है?
या ... इस बारे में क्या ... ???
var arr = [];
//Add lots of items
for(var i = 0; i < 1000000; i++)
arr[i] = Math.random();
//Now I use it like a queue...
for(var i = 0; i < arr.length; i++)
{
var item = arr[i].shift();
//Do something with item...
}
पारंपरिक सरणियों के लिए, प्रदर्शन भयानक होगा; जबकि, अगर एक लिंक्डलिस्ट का इस्तेमाल किया गया ... इतना बुरा नहीं।