gpt4 book ai didi

javascript - 充满 bool 值的 Javascript 对象的保留大小

转载 作者:行者123 更新时间:2023-11-28 02:10:37 27 4
gpt4 key购买 nike

我刚开始使用 Chrome 的分析器。所以这可能是对我得到的结果的误解。

如果我打开 Chrome 分析器并拍摄以下网页的堆快照,我会注意到 obj3 的保留大小是 obj1 和 obj2 的保留大小的十倍以上。

<html>
<head>
</head>
<body>
<script>

// return an object with s keys, with values alternating true and false
var makeData = function (s) {
var o = {};
for (var i = 0; i < s; i++) {
o['data' + i] = !!(i % 2);
}
return o;
}

window.obj1 = makeData(14);
window.obj2 = makeData(15);

window.obj3 = makeData(16);
window.obj4 = makeData(17);
window.obj5 = makeData(18);


</script>
</body>
</html>

看起来包含 bool 值的字段少于 15 个的对象的保留大小始终为 80,但超过 16 个字段的保留大小为 828,17 有 848,18 有 868,等等...我很好奇这里发生了什么?

如果重要的话,我在运行 10.6 的 MacBook 上使用 Chome 版本 27.0.1453.110。谢谢,

最佳答案

JavaScript 中的对象是一个映射。在底层存储此结构的最简单方法是键/值对列表 - 要搜索/更新,您需要遍历所有键/值对以查找匹配项。查找的计算成本显然与您拥有的键/值对的数量成正比(O(n)),但是当您拥有少量的键/值对时,这是可以的。

但是,对于较大数量的键,使用 hash table 会更有效。 。哈希表中的查找是常数时间 (O(1)),但这个常数时间并不简单。

我的猜测是 Chrome 中的 V8 JavaScript 引擎会在这两种设置之间进行交换,具体取决于它认为哪种设置会更有效,并且您只需找到此切换的阈值即可。

关于javascript - 充满 bool 值的 Javascript 对象的保留大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17139080/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com