Emo*_*Emo 1 c# linq performance lambda
我想知道为什么C#会提供lambda表达式,如果它是一个性能杀手?
试图运行以下内容:
Stopwatch sw = new Stopwatch();
sw.Start();
x = x.Select((int i) => i += 1).ToArray();
sw.Stop();
Console.WriteLine(sw.ElapsedTicks);
Run Code Online (Sandbox Code Playgroud)
和
Stopwatch sw = new Stopwatch();
sw.Start();
for (int j = 0; j < 1000; j++) y[j] += 1;
sw.Stop();
Console.WriteLine(sw.ElapsedTicks);
Run Code Online (Sandbox Code Playgroud)
对于x = 1000,我们会发现巨大的差异.
是否有适合lambda的用例?
使用lambda表达式的代码将x
所有1000个元素复制并复制到一个新数组中,为其所有1000个值计算新值.这显然比仅仅修改同一阵列中的1000个现有元素更昂贵.
怎么做对啊!
简单:使用LINQ和代表以达到正确的目的.使用一组数字并递增其所有值不是我将使用LINQ的东西.
仅仅因为C#提供了lambdas(它们是委托和表达式树的真正语法糖),并不意味着你必须将它们用于所有事情.如果你出于正确的目的使用它们,你会注意到它们不会产生任何真正的性能命中,至少不会像你观察到的那样严重.
归档时间: |
|
查看次数: |
1901 次 |
最近记录: |