【发布时间】:2018-03-16 18:26:34
【问题描述】:
我正在阅读“JavaScript Ninja 的秘密”一书。但我对我在这本书中找到的数字感到困惑。在我看来,简单的 for 循环失去了获取数组长度的时间,所以如果之前缓存了长度,速度将会提高。但下图显示了相反的结果。有人可以给我理由吗? 。谢谢。
【问题讨论】:
-
我们说的是 7% 的差异和 5% 的准确率。我会说这两个结果实际上是相等的。
-
显然,从任何范围(取决于)存储/检索变量会导致性能有所下降。这就像使用布尔构造函数声明一个
false变量。 -
我根本不喜欢这些在 jsperf 上的简短代码性能测试。恕我直言,他们几乎什么都没说。大多数发布在 stackoverflow 上的信息都没有经过认真处理,无法真正获取任何真实信息。
-
这是一个讽刺的回应,因为我想知道循环实际上在做什么。 1 项、100000 项等
-
a) 浏览器非常擅长优化惯用代码(即缓存
.length访问自己时,他们看到它没有改变)b) 你的i变量是全局的,这会减慢速度很多