c# – 有没有一个很好的来源,可以概述linq优化?

前端之家收集整理的这篇文章主要介绍了c# – 有没有一个很好的来源,可以概述linq优化?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Linq做了很多聪明的事情,例如使用Count()方法在IList上返回Count-property的结果.
有没有一个很好的来源,概述这个优化?

这将是非常有趣的,因为以前我知道上述,我从来没有使用Count(),因此经常返回一个列表< T>而不仅仅是IEnumerable< T>因为我知道呼叫者需要经常需要列表的实例计数.

但是请记住,Count()并不真正计算IEnumerable< T>中包含的实例.但是从返回的列表返回Count-property的结果,因此不会使性能下降,从而使我将许多返回的类型从List更改为IEnumerable< T>.

解决方法

我所知道的当前优化:

> Count使用Count属性,如果序列实现ICollection<T>,并且不使用谓词. (在.NET 4 Count也针对非通用型ICollection进行了优化.)
> ElementAt/ElementAtOrDefault通过索引访问序列实现IList<T>.
> Last/LastOrDefault通过索引进行访问,如果序列实现IList< T>并且不使用谓词.
> ToArray/ToList如果序列实现ICollection< T>,则使用Count属性更有效地分配内存. (但它们都不优于ICollection.)

可能在那里的优化,但不是:

> Last / LastOrDefault在使用谓词的情况下不进行优化.没有理由不能对IList T进行优化,通过列表向后迭代,并通过索引访问每个元素.
> SequenceEqual可以优化ICollection< T>和ICollection,使用Count属性来确定列表是否是相同的长度,如果不是,则提前发布.
> Skip可以针对IList T进行优化,通过索引访问元素并直接在索引n处开始,而不是迭代和丢弃前n个元素.
> ToArray / ToList也可以优化ICollection,使用Count属性更有效地分配内存.
> ToDictionary可以优化ICollection< T>和ICollection,使用Count属性更有效地分配内存.

原文链接:https://www.f2er.com/csharp/96553.html

猜你在找的C#相关文章