gpt4 book ai didi

c# - Lambda性能 killer

转载 作者:太空宇宙 更新时间:2023-11-03 17:56:09 24 4
gpt4 key购买 nike

我想知道如果C#是性能杀手,为什么C#会提供lambda表达式?

尝试运行以下命令:

Stopwatch sw = new Stopwatch();
sw.Start();
x = x.Select((int i) => i += 1).ToArray();
sw.Stop();
Console.WriteLine(sw.ElapsedTicks);




Stopwatch sw = new Stopwatch();
sw.Start();
for (int j = 0; j < 1000; j++) y[j] += 1;
sw.Stop();
Console.WriteLine(sw.ElapsedTicks);


对于x = 1000,我们会发现巨大的差异。

lambda是否有合适的用例?

最佳答案

我认为我们必须记住LINQ是QUERIES的语言。当然,您也可以使用它来做其他事情,例如更新集合(在SO上经常问到的问题)或运行循环,但是为什么要这样做呢? LINQ和lambda表达式并不是新的,完全替代过程编程的方法,它只是一个可以在适当时使用的工具。

与其他查询语言(例如t-sql)一样,LINQ为您提供了定义要获取的信息的工具,而不是您要如何获取的工具,这也允许您创建一种语言-独立查询,以便以后使用解析为您想要的任何内容。在很多情况下使用它可能非常方便且通用,还可以抽象出基础数据类型/数据源,但是这也意味着您要离开HOW的具体实现,以向要求编写解析器的人寻求帮助。

我建议您阅读一些示例linq提供程序。例如,以LINQ to LDAP为例:这样的提供程序允许您作为开发人员仅专注于所需的数据,而不能专注于基础数据结构/ Active Directory API,这可能会很烦人。

与获得的所有其他工具一样,您需要问自己想要获得什么,以及该工具是否是最佳选择。一个很好的类比是在sql servre查询中使用循环。当然可以做到,但是您通常会选择建立一个选择,该选择将使sql引擎决定如何执行查询。

关于c# - Lambda性能 killer ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10772452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com