gpt4 book ai didi

javascript - 为什么原生 javascript 数组 forEach 方法明显慢于标准 for 循环?

转载 作者:行者123 更新时间:2023-12-03 12:52:25 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why most JavaScript native functions are slower than their naive implementations?

(1 个回答)


5年前关闭。




在阅读 Quintus game engine 的源代码时,我发现他们大量使用 for 循环,而不是原生的 forEach。

我最初的想法是原生的 forEach 方法会比标准的 for 循环稍微快一些。然而,在用 these benchmarks 测试了我的理论之后,for 循环结构似乎要快得多。

在四处寻找之后,我似乎无法找出引擎盖下发生了什么。有谁知道巨大差异的原因?

编辑:要清楚,我问“为什么”是这种情况。我不是在问“哪个更快”。

最佳答案

forEach 在内部包含许多检查,不像简单的循环那么简单。
the Mozilla Javascript reference详情:

if (!Array.prototype.forEach)
{
Array.prototype.forEach = function(fun /*, thisArg */)
{
"use strict";

if (this === void 0 || this === null)
throw new TypeError();

var t = Object(this);
var len = t.length >>> 0;
if (typeof fun !== "function")
throw new TypeError();

var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
for (var i = 0; i < len; i++)
{
if (i in t)
fun.call(thisArg, t[i], i, t);
}
};
}

关于javascript - 为什么原生 javascript 数组 forEach 方法明显慢于标准 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22155280/

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