【问题标题】:Performance IEnumerable<T>.ToList().ForEach() over loop [duplicate]循环性能 IEnumerable<T>.ToList().ForEach() [重复]
【发布时间】:2013-04-04 19:27:41
【问题描述】:

这两个语句在性能上有区别吗?

IEnumerable<T>.ToList().ForEach(x => Console.WriteLine(x));

foreach (var obj in IEnumerable<T>)
   Console.WriteLine(obj)

【问题讨论】:

  • 你有一个编译器并且可以访问Stopwatch类——为什么不自己测试一下呢?
  • 是的,因为您不必创建 List 实例 foreach 超过 IEnumerable 应该更快。
  • Arran,它不是重复的,因为我的对象是 IEnumerable,我必须先创建一个列表。
  • 不是重复的,@Arran - 不同的问题
  • 因此为什么它是一个可能重复,如果你不同意,不要关闭它:)

标签: c# linq


【解决方案1】:

在第一个示例中,您将

  1. 通过枚举来源创建一个列表
  2. 枚举新列表并为每个元素调用Console.WriteLine

在第二个示例中,您将

  1. 枚举来源并为每个元素调用Console.WriteLine

第一个比第二个有两个表现处罚:

  • 创建新的List 对象
  • 双重枚举:先遍历原始源,然后遍历列表

【讨论】:

  • 反对者:愿意分享原因吗?
猜你喜欢
  • 2017-07-14
  • 1970-01-01
  • 2016-08-27
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
相关资源
最近更新 更多