2013-05-25 49 views
1

是否有在执行速度和/或存储器消耗的任何差异之间:性能差

for (var o in objs) { ... } 

objs.forEach((o) { ... }); 

回答

2

列表和队列,所述后者在我的机器上使用Dart VM的速度通常要快2到2.5倍。这是有道理的,因为forEach在内部迭代01​​的某些变体,而for-in迭代Iterator.moveNext()

使用dart2jsd8运行,forEach是我的机器上更快队列约1.3倍,但对于列表1.2倍

一如既往,当性能是一个特别重要的考虑因素时,基准测试您的真实世界代码是有意义的。

如果内存消耗存在实质性差异,我会认为它是一个错误。

更新:弗洛里安Loitsch解释在下面的意见:

moveNext方法目前没有内联(太大)。这种情况应该很快发生变化,之后两者应该大致保持相同的速度。

+0

你在VM或dart2js上测试过吗? –

+0

@AlexandreArdhuin只是虚拟机。 –

+0

@AlexandreArdhuin使用'dart2js','forEach'仍然更快,但只有1.3倍。 –