LINQ示例的复杂性是什么?

我想知道LINQ的总体性能.我承认,这很方便,但是LINQ的性能如何?我知道这是一个广泛的问题.所以我想问一个具体的例子:

我有一个匿名类型:

var users = reader.Select(user => new MembershipUser(reader.Name, reader Age));

现在,我想将其转换为MembershipUserCollection.

所以我这样做:

MembershipUserCollection membershipUsers = new MembershipUserCollection();
users.ToList().ForEach(membershipUsers.Add); //what is the complexity of this line?

最后一行的复杂性是什么?是n ^ 2吗?

ToList()方法是否针对用户的每个元素进行迭代并将其添加到列表中?
还是ToList()工作不同?因为如果不是这样,我很难说出使用代码的最后一行而不是简单地使用代码的原因:

foreach (var user in users)
{
    membershipUsers.Add(user);
}

解决方法:

它是O(n)-因为.ToList()通过枚举迭代一次,并将元素复制到结果List .只是将其内容复制到另一个列表中(然后将其丢弃).>中.>

我怀疑这仅仅是由于在List< T>上具有.ForEach()方法的方便.尽管如此,仍可以为IEnumerableT编写直接实现的代码,这将节省此多余的复制-或仅编写

foreach (var user in users) membershipUsers.Add(user)

这基本上就是您想要表达的内容;-)

上一篇:java-休眠:从未使用过查询缓存


下一篇:java-jsp:include,性能,模块化,替代方法和最佳实践,第96部分