0

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

var linqResult = from item in databaseObject

选择物品;

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

方法二

var data = from item in databaseObject
select new customobject()
{
//initialize properties
});

data.ToList();
4

2 回答 2

0

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

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

于 2013-06-28T15:29:58.083 回答
0
  1. 我建议您对代码进行单元/性能测试,以查看哪个对于您的特定场景更快。

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

  3. 据我了解,LINQ-TO-SQL(您已标记)根据您的 LINQ 查询生成 SQL 命令,并针对数据源运行这些命令。这肯定会更快,作为数据源的 foreach 循环将根据查询仅返回您期望的内容,而 foreach 循环可能需要首先从 SQL 获取整个集合,然后对其进行迭代。

  4. 如果您使用的是 In-Memory 集合,您可能需要调查 LINQ 与 foreach 与 Parallel.ForEach 的速度。并行性“可以”比等效的 LINQ 执行得更快,但同样,您需要对所有场景进行性能测试。

于 2013-06-28T15:34:53.333 回答