针对选择的表现

时间:2012-10-25 08:05:14

标签: performance linq select for-loop

我在Bill Wagners Book“Effective C#”中读到,人们应该支持比传统循环( for )更多的声明性选择语句。

例如:

 int[] foo = new int[1000];
 for (int i = 0; i < foo.Length; i++)
     foo[i] = i * i;

是传统的命令式代码,而这将是声明性的Linq代码:

 int[] foo2 = (from i in Enumerable.Range(0, 1000)
               select i * i).ToArray();

作为一个老式的程序员,我更喜欢第一个版本。

问题是性能如何?我想第一个版本也更快。

1 个答案:

答案 0 :(得分:3)

for方式会更快!因为不会有任何LINQsided表达式树评估/优化等......

但使用select获得的实际利润是“延期执行”。

当程序指针位于放置for的代码部分时,for循环将立即被执行。 select语句只在需要时执行,并且只在需要时执行。