执行速度和/或内存消耗是否存在差异:
for (var o in objs) { ... }
和
objs.forEach((o) { ... });
答案 0 :(得分:2)
使用列表和队列,使用Dart VM,后者在我的机器上的速度往往快2到2.5倍。这是有道理的,因为forEach
在内部使用for (int i = 0; i < length; i++)
的某些变体进行迭代,而for-in
则使用Iterator.moveNext()
进行迭代。
使用dart2js
并在d8
上运行,forEach
在我的机器上的队列速度提高了1.3倍,但对于列表却慢了的1.2倍。
与往常一样,当性能是一个特别重要的考虑因素时,对现实世界的代码进行基准测试是有意义的。
如果内存消耗存在很大差异,我认为这是一个错误。
更新:Florian Loitsch在下面的评论中解释道:
moveNext
方法目前尚未内联(太大)。这是应该很快改变的事情,之后两者应该大致以相同的速度。