Uzyskanie dostępu do właściwości obiektu i elementów tablicy w JavaScript jest składnie założone w constant time: O (1). Charakterystyki wydajności nie są gwarantowane w specyfikacji ECMAScript, ale wszystkie współczesne silniki JavaScript pobierają właściwości obiektów w stałym czasie.
Oto prosty przykład pokazujący, jak czas dostępu rosną, gdy pojemnik jest większe czasy X1000:
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');
Wyniki w Firebug, Firefox 3.6.10 (Mac OS X 10.6.4 - 2,93 GHz Intel Core 2 Duo):
10k Accesses from largeObject: 22ms
10k Accesses from smallObject: 19ms
Wyniki w Chrome Dev Tools 6.0.472:
10k Accesses from largeObject: 15ms
10k Accesses from smallObject: 15ms
Internet EXPL orer 8.0.7600 z Firebug Lite na Windows 7
10k Accesses from largeObject: 250ms
10k Accesses from smallObject: 219ms
Nic nie jest „na pewno” (chyba, że, podobnie jak w C++, standard definiuje właściwości działania pojemników?), ale mogę zagwarantować, że żadna przeglądarka używa przeszukiwanie liniowe . Istnieje ogromna konkurencja dla przeglądarek, które mogą się teraz nawzajem prześcignąć w benchmarkach JS; możesz mieć pewność, że indeksowanie tablicy będzie tak szybkie, jak może to zrobić producent przeglądarki. – meagar