Было бы очень интересно задокументировать производительность, связанную с массивами и объектами в JavaScript (особенно Google V8). Я нигде в Интернете не нашел исчерпывающей статьи по этой теме.
Я понимаю, что некоторые Объекты используют классы в качестве своей базовой структуры данных. Если есть много свойств, они иногда рассматриваются как хеш-таблица?
Я также понимаю, что массивы иногда обрабатываются как массивы C ++ (т. Е. Быстрая случайная индексация, медленное удаление и изменение размера). А в других случаях они больше похожи на объекты (быстрая индексация, быстрая вставка / удаление, больше памяти).И, возможно, иногда они хранятся в виде связанных списков (например, медленная случайная индексация, быстрое удаление / вставка в начале / конце)
Какова точная производительность извлечения массивов / объектов и манипуляций в JavaScript? (специально для Google V8)
Более конкретно, каково влияние на производительность:
Также приветствуются любые статьи или ссылки для получения более подробной информации. :)
РЕДАКТИРОВАТЬ: Мне действительно интересно, как массивы и объекты JavaScript работают под капотом. Кроме того, в каком контексте движок 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...
}
Для обычных массивов производительность была бы ужасной; тогда как, если использовался LinkedList ... не так уж и плохо.