小编rbu*_*rbu的帖子

使用Linq To Objects时,为什么IQueryable的速度是IEnumerable的两倍

我知道IQueryable和IEnumerable之间的区别,我知道Linq To Objects通过IEnumerable接口支持集合.

令我困惑的是,当集合转换为IQueryable时,查询的执行速度是原来的两倍.

lList类型的填充对象,如果列表l通过l.AsQueryable()转换为IQueryable,则linq查询的速度是两倍.

我用VS2010SP1和.NET 4.0编写了一个简单的测试来演示:

private void Test()
{
  const int numTests = 1;
  const int size = 1000 * 1000;
  var l = new List<int>();
  var resTimesEnumerable = new List<long>();
  var resTimesQueryable = new List<long>();
  System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();

  for ( int x=0; x<size; x++ )
  {
    l.Add( x );
  }

  Console.WriteLine( "Testdata size: {0} numbers", size );
  Console.WriteLine( "Testdata iterations: {0}", numTests );

  for ( …
Run Code Online (Sandbox Code Playgroud)

linq performance ienumerable linq-to-objects iqueryable

7
推荐指数
1
解决办法
4640
查看次数