首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

C# 中 Linq查询结果的循环性能改善

2013-03-12 
C# 中 Linq查询结果的循环性能改进对linq查询结果进行迭代时,linq才去执行查询,就是说{在迭代时,才真正执

C# 中 Linq查询结果的循环性能改进
对linq查询结果进行迭代时,linq才去执行查询,就是说{在迭代时,才真正执行}.这是延迟操作的一种性能提升的表现.

但试想下,需要对结果进行第2次,第3次...,那么这种延迟执行,却是性能的一个瓶颈.


测试如下代码:


得出一个结论:
查询结果返回后,马上调用 ToList() 方法,那么以后再循环时就不会再去执行查询了.
可从上面的代码看, ToList() 执行一次查询,遍历了所有元素,第三次for时,后遍历了一次(虽然不是所有元素).
试想下,集合中如果有100,1000,1万个元素时...


解决思路:
在循环迭代查询结果时,便将结果保存到一个结果集合中,下次循环迭代时,从这个结果集合中进行循环迭代



性能测试代码:

           

            sw.Start();            for (int i = 0; i < times; i++)            {                //Console.WriteLine(i);                foreach (var u in r3)                {                    var s = "a" + u.ToString();                    s += "";                }            }            sw.Stop();            Console.WriteLine(sw.Elapsed);            sw.Reset();


热点排行