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