gpt4 book ai didi

javascript - 为什么这两个反向循环之间存在性能差异?

转载 作者:行者123 更新时间:2023-11-30 06:25:57 25 4
gpt4 key购买 nike

Benchmarks

注意:要在该基准套件上运行以下两个测试,请单击Basic reverse for loopFalsy reverse for loop

下面列出的操作数/秒是在 Chrome 32、Win 7 64 位上。


这个循环

for (var i=a.length - 1; i >= 0; i--) { }  // 1,161,089 ops/sec

快得多
for (var i=a.length; i--;) { }  // 870,837 ops/sec

在 Chrome 32、Firefox 27 和 Opera 12 和 19 上。它们在 IE (5 - 11) 中大致相同,而虚假循环在 Safari Windows (5.1.7) 中实际上更快。这似乎与循环条件为假没有任何关系 - 该套件中还有另一个基准用于该比较。

“基本”循环比 Chrome 32、Win 7 64 位上的“虚假”循环快约 33%。为什么?

最佳答案

第二个循环:for (var i=a.length; i--;) { } 迭代直到 i-- 返回 false,因为该部分已写入在循环的条件部分。i-- 当 i 等于 0 时会返回 false,所以这两个循环的功能是一样的。

但是,第二个循环导致将 a.length 和 0 之间的每个值转换为 bool 值的额外任务,这比整数比较更耗时。

关于javascript - 为什么这两个反向循环之间存在性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21078589/

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