【发布时间】:2015-02-20 16:14:53
【问题描述】:
我知道在浏览器中,最好按照
的方式编写一个 for 循环 for(var i=0, l=arr.length; i<l; i++){ }
而不是
for(var i=0; i<arr.length; i++){ }
但这在 NodeJS 中是真的还是 V8 引擎对其进行了优化?
我知道在ecma-262 5.1 sec-15.4数组长度是这样定义的:
length 属性的值在数值上大于名称为数组索引的每个属性的名称;每当创建或更改 Array 对象的属性时,都会根据需要调整其他属性以保持此不变性。
因此,如果长度没有改变,这个方法会变慢的唯一原因是你必须访问属性。我正在寻找的是一个合理的示例/解释,它将显示 V8 引擎(在 NodeJS 中使用)在访问此属性时是否会受到性能影响。
【问题讨论】:
-
谈谈微优化...
-
我猜没有优化,因为它是一个需要在每个循环中检查的语句
-
@AmitJoki 没错,这是一个微优化,但知道答案后我晚上会睡得更好:)
-
@SleepDeprivedBulbasaur 是的,你已经被剥夺了睡眠:)
-
您可以尝试测试性能,看看这些引擎是否有任何差异
标签: javascript arrays node.js v8