传统上,要迭代 a 的键和值,Map
您可以这样写:
map.forEach((key, value) {
});
但是随着Dart 3.0 中模式的引入,你实际上可以将其写为
for (var MapEntry(:key, :value) in map.entries) {
}
事实上,For 和 for-in 循环部分的模式文档中给出了这样的构造作为示例。
我想这是否是一种更好的代码风格是主观的,但在性能/内存方面,一种方法比另一种方法更好吗?
传统上,要迭代 a 的键和值,Map
您可以这样写:
map.forEach((key, value) {
});
但是随着Dart 3.0 中模式的引入,你实际上可以将其写为
for (var MapEntry(:key, :value) in map.entries) {
}
事实上,For 和 for-in 循环部分的模式文档中给出了这样的构造作为示例。
我想这是否是一种更好的代码风格是主观的,但在性能/内存方面,一种方法比另一种方法更好吗?
可以使用基准来估计性能:
地图大小 100 的基准分数:
地图大小 100000 的基准分数:
地图大小 1000000 的基准分数:
forEach
结论:当使用迭代映射时,基准分数显示出稍微更好的性能。然而,对于中等大小的地图,性能增益太小,无法推荐一种风格而不是另一种风格。注意:基准测试是在 i5-6260U CPU @ 1.80GHz、32GB RAM 上执行的。