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) { ... });