为什么“.map”在 Dart(Flutter) 中比 "while/for loop" 慢

Why is ".map" slower then "while/for loop" in Dart(Flutter)

我看到这篇文章: https://itnext.io/comparing-darts-loops-which-is-the-fastest-731a03ad42a2

它说“.map”的基准测试结果很慢

但是我不明白为什么比while/for循环慢

它在低级别是如何工作的?

我认为是因为 .map 被称为这样的未命名方法 (_){ }

你能详细解释一下吗?

这是因为映射数组会创建每个值的副本,而不是修改原始数组。

由于 while/for 循环不复制值,而只是使用它们的索引访问它们,因此速度要快得多。

Can you explain that in detail?

这就像在说“我不明白为什么在工程卡车后面搭便车比坐高速火车到我的目的地要慢得多”。

唯一重要的细节是 map 不是 循环map() 在内部可能 使用 某种循环。

此人误用了用于其他用途的方法调用,只是因为该调用的 side-effect 调用具体化可迭代对象,如 toList(),它循环遍历给定的可迭代对象。它本身甚至没有副作用。

停止阅读人们滥用语言功能的“教程”或“提示”。 map() 不是循环。如果需要循环,请使用循环。三元运算符也是如此。它不是 if,如果您需要 if,请使用它。

按照它们的意思使用语言功能,停止滥用语言功能,因为它们的 side-effect 可以满足您的需求,然后想知道为什么它们不能正常工作因为该功能实际上意味着它。

对不起,如果这看起来有点啰嗦,但我现在已经看到了无数的例子。我不知道它是从哪里来的。我个人的猜测是“互联网教程”。因为每个人都可以写一个。请不要阅读它们。读一本好书。它由专业人士撰写、校对、编辑和检查。互联网教程是免费的,由随机的人编写,物有所值。