gpt4 book ai didi

javascript - For循环性能: storing array length in a variable

转载 作者:IT王子 更新时间:2023-10-29 03:00:24 25 4
gpt4 key购买 nike

考虑同一循环迭代的两个版本:

for (var i = 0; i < nodes.length; i++) {
...
}

var len = nodes.length;
for (var i = 0; i < len; i++) {
...
}

后一个版本比前一个版本快吗?

最佳答案

接受的答案是不正确的,因为任何像样的引擎都应该能够 hoist the property load out of the loop有如此简单的循环体。

参见 this jsperf - 至少在 V8 中 it is interesting to see实际上如何将它存储在变量中会改变寄存器分配 - 在使用变量的代码中,sum 变量存储在堆栈中,而使用 array.length-in- a-loop-code 它存储在一个寄存器中。我假设 SpiderMonkey 和 Opera 中也发生了类似的事情。

据作者称,JSPerf is used incorrectly , 70% 的时间。此处所有答案中给出的这些损坏的 jsperf 会产生误导性结果,人们会从中得出错误的结论。

一些危险信号是将代码而不是函数放在测试用例中,不测试结果的正确性或使用某种消除死代码消除的机制,在设置或测试用例中定义函数而不是全局。为了保持一致性,您需要在任何基准测试之前也预热测试函数,这样编译就不会在定时部分发生。

关于javascript - For循环性能: storing array length in a variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17989270/

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