dart - forEach 和 for (var o in objs) 之间的性能差异

标签 dart

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

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并在 d8 上运行, forEach在我的机器上,队列大约快 1.3 倍,但列表慢 1.2 倍。

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

如果内存消耗存在显着差异,我会认为这是一个错误。

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

The moveNext method is currently not inlined (too large). This is something that should change very soon, after which both should be roughly at the same speed.

关于dart - forEach 和 for (var o in objs) 之间的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16753474/

相关文章:

dart - TextFormString 验证器的多行字符串

asynchronous - Dartlang 'await'不等吗?

dart - 如何在 Angular.Dart 中以编程方式添加组件?

dart - 如何处理 NetworkImage GET 错误?

flutter - 在flutter上检测设备是手机、平板还是电视

dart - 如何清除 Flutter 的 Build 缓存?

Dart - 帮助我理解 Dart 上的这段代码是如何工作的

flutter - 如何在 flutter 中画出这个

android - flutter : Grid View inside list view

flutter - Navigator of 和 Navigator pop 的区别