C# foreach,linq,delegate集合查询的性能比较
昨天和别人讨论了一下linq的性能,自我觉得linq的性能不行,但是实际上linq还是在性能上有过人之处的,linq to sql除外,以下是简单的性能测试比较代码,在这里解释一下,代码的执行速度计时测试不能用datetime了,我还是个小白,刚开始用的datetime,结果发现linq的性能并不行,但是用StopWatch才发现了事实,以前对linq的偏见的同学还是拥抱一下linq吧,也许某些方面还存在没完全理解透,还请园友们给予批评指正。
class Program
{
static void Main(string[] args)
{
test();
}
static void test()
{
List<MyClass> list1 = new List<MyClass>();
for (int i = 0; i < 10000000; i++)
{
MyClass aa=new MyClass();
aa.Name = "测试数据" + i;
aa.id = i;
list1.Add(aa);
}
Stopwatch timer = new Stopwatch();
#region for循环
timer.Start();
List<MyClass> list2 = new List<MyClass>();
foreach (MyClass s in list1)
{
if (s.id >= 52 && s.id < 850) { list2.Add(s); }
}
timer.Stop();
Console.Write("集合匹配数" + list2.Count + ",for循环耗时:");
Console.WriteLine(timer.Elapsed.Ticks);
#endregion
#region linq
timer = new Stopwatch();
timer.Start();
var list3 = list1.Where(product => product.id >= 52 && product.id < 850);
timer.Stop();
Console.Write("集合匹配数" + list3.Count() + ",linq耗时:");
Console.WriteLine(timer.Elapsed.Ticks);
&nb
相关新闻>>
- 发表评论
-
- 最新评论 进入详细评论页>>
今日头条
更多>>您可能感兴趣的文章
- Add View -> Strongly-typed view ->Model Class
- .NET简谈设计模式之(装饰者模式性能问题?)
- 让asp.net mvc的Action支持jQuery直接提交的javascript对
- DCOM--高效率主从服务器程序的新概念
- .Net插件框架的实现及分析(二)
- 使用HttpWebRequest下载经过重定向的文件
- C#高级编程:使用XPath命名空间中的类[2]
- Asp.net MVC源码分析--UrlRoutingModule与Service location的
- .NET类库中发现设计模式:策略模式
- ASP.ENT前台更改绑定数据的日期格式



