gpt4 book ai didi

javascript - 为什么 JSON 克隆对象比 `for in` 和 `map` 更快?

转载 作者:行者123 更新时间:2023-11-29 10:19:11 25 4
gpt4 key购买 nike

使用下面的函数深度克隆一棵树,

function clone_map(obj){
return obj.map(function(val){
return typeof(val) == "object" ? clone_map(val) : val;
});
};
function clone_forin(obj){
var result = [];
for (var key in obj){
var val = obj[key];
result.push(typeof(val) == "object" ? clone_forin(val) : val);
};
return result;
};
function clone_json(obj){
return JSON.parse(JSON.stringify(obj));
};

JSON 是最快的 on my tests .为什么?还有更好的选择吗?

最佳答案

从后续测试中可以看出,JSON 选项在某些版本的 Chrome 上速度更快,但在 Safari 或 Firefox 上则不然。您可能还会在其他浏览器中找到混合版本。

您的 JavaScript 克隆代码在 JavaScript 中。浏览器可以自由地以高度优化的机器代码实现 JSON.stringifyJSON.parse。 (如果需要,它也可以免费将您的 JavaScript 编译成优化的机器代码。)因此,有时,一个相当简单的数组(例如您测试过的数组)可能会更快也就不足为奇了JSON比没有。在某些引擎上。带有一些样本数据集。而在其他引擎(或其他样本数据集)上,结果不同。

同样值得注意的是,差异并不大,在任何现实世界中都没有。在 Chrome 24 中显示的测试中,JSON 选项比其最接近的竞争对手快约 25%。但每个单独的迭代都快得令人眼花缭乱,以至于在现实世界中没有任何区别。 392k ops/sec 对比 521k ops/sec,它仍然是 ops/sec 的卸载。 :-)

关于javascript - 为什么 JSON 克隆对象比 `for in` 和 `map` 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100022/

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