4

执行速度和/或内存消耗之间是否存在差异:

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

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

1 回答 1

3

使用列表和队列,后者在我的机器上使用 Dart VM 时往往快 2 到 2.5 倍。这是有道理的,因为forEach在内部使用 , 的一些变体进行迭代for (int i = 0; i < length; i++),而for-in使用 . 进行迭代Iterator.moveNext()

在我的机器上使用dart2js和运行队列大约快 1.3 倍,但列表慢1.2 倍。d8forEach

与往常一样,当性能是一个特别重要的考虑因素时,对您的实际代码进行基准测试是有意义的。

如果内存消耗有很大差异,我会认为这是一个错误。

更新: Florian Loitsch 在下面的评论中解释:

moveNext方法当前未内联(太大)。这应该很快就会改变,之后两者的速度应该大致相同。

于 2013-05-25T20:44:59.717 回答