Dart forEach和for之间的性能差异(objs中的var o)

Dart forEach和for之间的性能差异(objs中的var o),dart,Dart,以下各项之间的执行速度和/或内存消耗是否存在差异: for (var o in objs) { ... } 及 对于列表和队列,使用Dart虚拟机,在我的机器上,后者往往要快2到2.5倍。这是有意义的,因为forEach在内部使用for(int i=0;i

以下各项之间的执行速度和/或内存消耗是否存在差异:

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


对于列表和队列,使用Dart虚拟机,在我的机器上,后者往往要快2到2.5倍。这是有意义的,因为
forEach
在内部使用
for(int i=0;ifor in
使用
Iterator.moveNext()进行迭代

使用
dart2js
并在
d8
上运行,
forEach
在我的机器上,队列速度大约快1.3倍,但列表速度慢1.2倍

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

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

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


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


你在虚拟机或dart2js上测试过吗?@AlexandreArdhuin只是虚拟机。@AlexandreArdhuin与
dart2js
forEach
的速度更快,但只有大约1.3倍。我很惊讶这一差异。我希望乐观主义者能够处理这个问题。如果现在有差异,我希望随着VM和dart2js的进展,它会消失。
moveNext
方法当前没有内联(太大)。这应该很快改变,之后两者的速度应该大致相同。
objs.forEach((o) { ... });