0

根据这个 JSPerf While !在所有浏览器中,未定义样式数组循环的速度要快约 10 倍。这种循环方式的缺点是什么?

4

4 回答 4

1

如您所见,我们谈论的是每秒数百万次操作的 10 倍快/慢,这并不足以担心。

这种风格的一个可能的缺点是其他开发人员的可读性,这比“性能提升”更重要。

判断自己,什么更具可读性?

// Chrome 21: 5M operations per second
var a;
while ((a = arr[i++]) !== undefined) {
    someFn(a);
}

// Chrome 21: 324k operations per second
for (var i = 0; i < arr.length; i++) {
    someFn(arr[i]);
}
于 2012-06-18T20:33:48.877 回答
1

它实际上是测试用例中的一个错误,每次测试运行的迭代器都没有被重置为零(即,只有第一次测试运行滚动完整循环,下一次运行的迭代器已经超过数组的末尾,因此滚动零次)。请参阅更正的测试套件以获取真正的基准。

(注意:我没有检查所有的测试用例,其他的也可能有缺陷)

于 2012-06-18T20:36:48.627 回答
0

我能看到的主要缺点是你不能跳出循环!您很快就会遇到无响应的 UI。

于 2012-06-18T20:32:24.457 回答
0

缺点: 1. 如果 a[i] 已经被使用,它不再是未定义的。因此,您可能会做的比预期的更多。2. 可读性,很难知道终点(除非你发表一些评论;)没有别的。

新版本仍然没有太大差异,但是如果您需要速度,那么请好好评论并好好测试。

如果你的函数“someFn(a);” 有一个比这些测试更多的计时器,那么如果它很重要,我建议测试你自己的循环。

如果不总是坚持整洁的编码。

于 2012-06-18T20:53:29.450 回答