Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪种方法更快-foreach或LINQ选择?_Linq_Linq To Sql - Fatal编程技术网

哪种方法更快-foreach或LINQ选择?

哪种方法更快-foreach或LINQ选择?,linq,linq-to-sql,Linq,Linq To Sql,我正在处理清单收集。以下哪项执行速度更快? 将结果中的项目数考虑为1000。 方法1: var linqResult = from item in databaseObject 选择项目 foreach(customobject item in linqResult) { List<customobject>.add(item); } 我认为linq选择的好处是,它提供了延迟执行,而简单的foreach则没有。如果你使用 收益回报率 默认情况下,您可以实现linq提供的功能。 我

我正在处理清单收集。以下哪项执行速度更快? 将结果中的项目数考虑为1000。 方法1:

var linqResult = from item in databaseObject
选择项目

foreach(customobject item in linqResult)
{
List<customobject>.add(item);
}

我认为linq选择的好处是,它提供了延迟执行,而简单的foreach则没有。如果你使用
收益回报率

默认情况下,您可以实现linq提供的功能。 我不知道是否有任何性能差异,但延迟执行可以节省大量内存

  • 我建议您对代码进行单元/性能测试,看看对于特定的场景,哪种速度更快

  • 这取决于你到底在做什么。我的直觉是LINQ查询(经过适当的性能测试和优化)将比普通的foreach循环更快

  • 据我所知,LINQ-TO-SQL(您已经标记)基于您的LINQ查询生成SQL命令,并针对数据源运行这些命令。根据查询,作为数据源的foreach循环只返回您所期望的结果,而foreach循环可能需要首先从SQL获取整个集合,然后对其进行迭代,这肯定会更快

  • 如果您使用的是内存中的集合,那么可能需要研究LINQ与foreach与Parallel.foreach的速度。并行性“可能”比同等的LINQ执行得更快,但同样,您需要对所有场景进行性能测试


  • 你试过运行代码吗?您的结果是什么?数据库开销足够大,我怀疑它将非常接近相同的结果。如果您只希望获取某些字段,则后者可能更有效。@SLaks,为什么这不重要?在软件设计中,性能几乎总是很重要的?我认为这只是一个理论问题,有1000条记录并不重要。使用linq可以编写更少的代码。@series0ne:性能在软件开发中很少重要。注意:他或她还应该尝试在测试中切换顺序(先运行foreach,再运行linq,反之亦然)。另外,关于第4点,还有一个可以用来代替Parallel.ForEach的。下面是一篇比较两者的优秀PDF文章:
    var data = from item in databaseObject
    select new customobject()
    {
    //initialize properties
    });
    
    data.ToList();