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