जावास्क्रिप्ट में ऑब्जेक्ट गुणों और सरणी तत्वों तक पहुंचने के लिए वाक्य रचनात्मक रूप से constant time: O (1) में किया जाना माना जाता है। ईसीएमएस्क्रिप्ट विनिर्देश में प्रदर्शन विशेषताओं की गारंटी नहीं है, लेकिन सभी आधुनिक जावास्क्रिप्ट इंजन निरंतर समय में ऑब्जेक्ट गुणों को पुनर्प्राप्त करते हैं।- 2.93GHz इंटेल कोर 2 डुओ
Firebug, फ़ायरफ़ॉक्स 3.6.10 (मैक ओएस एक्स 10.6.4 में
var largeObject = {};
var smallObject = {};
var x, i;
for (i = 0; i < 1000000; i++) {
largeObject['a' + i] = i;
}
for (i = 0; i < 1000; i++) {
smallObject['b' + i] = i;
}
console.time('10k Accesses from largeObject');
for (i = 0; i < 10000; i++) x = largeObject['a' + (i % 1000000)];
console.timeEnd('10k Accesses from largeObject');
console.time('10k Accesses from smallObject');
for (i = 0; i < 10000; i++) x = largeObject['a' + (i % 1000)];
console.timeEnd('10k Accesses from smallObject');
परिणाम:
यहाँ एक सरल तरीका दिखाते हुए अभिगम समय बढ़ने जब कंटेनर x1000 गुना बड़ी है उदाहरण दिया गया है): क्रोम देव उपकरण में
10k Accesses from largeObject: 22ms
10k Accesses from smallObject: 19ms
परिणाम 6.0.472:
10k Accesses from largeObject: 15ms
10k Accesses from smallObject: 15ms
इंटरनेट Expl विंडोज पर Firebug Lite के साथ 8.0.7600 orer 7
10k Accesses from largeObject: 250ms
10k Accesses from smallObject: 219ms
स्रोत
2010-10-04 21:12:50
कुछ नहीं "पक्का" है (जब तक, सी ++ के साथ के रूप में, मानक को परिभाषित करता है कंटेनरों? के प्रदर्शन विशेषताओं) लेकिन मैं गारंटी ले सकते हैं कि कोई ब्राउज़र एक रेखीय खोज का उपयोग करता है । इन दिनों जेएस बेंचमार्क में ब्राउज़र को एक-दूसरे से बाहर करने के लिए भारी प्रतिस्पर्धा है; आप आश्वस्त रह सकते हैं कि एक सरणी अनुक्रमणित करना जितना तेज़ होगा उतना ही ब्राउज़र निर्माता इसे बना सकता है। – meagar