在 JavaScript (特别是 GoogleV8)中与数组和对象相关的性能将非常有趣。我在互联网上找不到任何关于这个主题的综合性文章。
我知道有些对象使用类作为它们的底层数据结构。如果有很多属性,它有时会被视为一个哈希表?
我也理解有时数组被当作 C + + 数组(即快速随机索引,慢速删除和调整大小)。而且,在其他时候,它们更像对象(快速索引、快速插入/删除、更多内存)。而且,也许有时候它们被存储为链表(即缓慢的随机索引,快速删除/插入在开始/结束)
在 JavaScript 中,Array/Object 检索和操作的精确性能如何? (特别是针对 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... ... 也没有那么糟糕。