Die mit Arrays und Objekten in JavaScript (insbesondere Google V8) verbundene Leistung wäre sehr interessant zu dokumentieren. Ich finde nirgendwo im Internet einen umfassenden Artikel zu diesem Thema.
Ich verstehe, dass einige Objekte Klassen als zugrunde liegende Datenstruktur verwenden. Wenn es viele Eigenschaften gibt, wird es manchmal als Hash-Tabelle behandelt?
Ich verstehe auch, dass Arrays manchmal wie C ++ - Arrays behandelt werden (dh schnelle zufällige Indizierung, langsames Löschen und Ändern der Größe). In anderen Fällen werden sie eher wie Objekte behandelt (schnelle Indizierung, schnelles Einfügen / Entfernen, mehr Speicher). Und vielleicht werden sie manchmal als verknüpfte Listen gespeichert (dh langsame zufällige Indizierung, schnelles Entfernen / Einfügen am Anfang / Ende)
Was ist die genaue Leistung von Array- / Objektabrufen und -manipulationen in JavaScript? (speziell für Google V8)
Genauer gesagt, welche Auswirkungen hat dies auf die Leistung:
- Hinzufügen einer Eigenschaft zu einem Objekt
- Entfernen einer Eigenschaft aus einem Objekt
- Indizieren einer Eigenschaft in einem Objekt
- Hinzufügen eines Elements zu einem Array
- Entfernen eines Elements aus einem Array
- Indizieren eines Elements in einem Array
- Array.pop () aufrufen
- Array.push () aufrufen
- Array.shift () aufrufen
- Array.unshift () aufrufen
- Array.slice () aufrufen
Alle Artikel oder Links für weitere Details sind ebenfalls willkommen. :) :)
EDIT: Ich frage mich wirklich, wie JavaScript-Arrays und -Objekte unter der Haube funktionieren. In welchem Kontext "weiß" die V8-Engine, auf eine andere Datenstruktur "umzuschalten"?
Angenommen, ich erstelle ein Array mit ...
var arr = [];
arr[10000000] = 20;
arr.push(21);
Was ist hier wirklich los?
Oder ... was ist damit ... ???
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...
}
Bei herkömmlichen Arrays wäre die Leistung schrecklich. wohingegen, wenn eine LinkedList verwendet wurde ... nicht so schlecht.