gpt4 book ai didi

javascript - 一个 Javascript 回调模式示例 - 它真的更有效吗?

转载 作者:行者123 更新时间:2023-11-29 17:23:16 24 4
gpt4 key购买 nike

我在线阅读 book .它给出了一个回调模式示例如下。

var findNodes = function () {
var i = 100000, // big, heavy loop
nodes = [], // stores the result
found; // the next node found
while (i) {
i -= 1;
// complex logic here...
nodes.push(found);
}
return nodes;
};
var hide = function (nodes) {
var i = 0, max = nodes.length;
for (; i < max; i += 1) {
nodes[i].style.display = "none";
}
};

// executing the functions
hide(findNodes());

据说这样效率不高,因为它循环遍历找到的节点两次,下面的代码效率更高。

// refactored findNodes() to accept a callback
var findNodes = function (callback) {
var i = 100000,
nodes = [],
found;

// check if callback is callable
if (typeof callback !== "function") {
callback = false;
}

while (i) {
i -= 1;

// complex logic here...

// now callback:
if (callback) {
callback(found);
}

nodes.push(found);
}
return nodes;
};
// a callback function
var hide = function (node) {
node.style.display = "none";
};

// find the nodes and hide them as you go
findNodes(hide);

但是两者都是O(n),调用函数的开销可能会很大,导致findNodes()中的每次迭代(有回调)都需要更多的时间。所以我想知道这个修改是否真的像作者所说的那样有所不同。又该如何衡量这两种工具的成本呢?

最佳答案

根据数组的大小,仅循环一次的示例可以更有效率。

但是,您的担忧是正确的。特别是在较旧的 JS 引擎中,函数调用的开销很大。

与所有性能优化一样,这是您应该衡量的东西。使用分析器测试代码以找出瓶颈,然后进行优化,然后重新运行分析以了解它是否产生了积极效果。

关于javascript - 一个 Javascript 回调模式示例 - 它真的更有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11222505/

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