Is the Linq Count() faster or slower than List.Count or Array.Length?
Is the LINQ Count()
method any faster or slower than List<>.Count
or Array.Length
?
Solution 1:
In general Slower. LINQ's Count in general is an O(N)
operation while List.Count
and Array.Length
are both guaranteed to be O(1)
.
However it some cases LINQ will special case the IEnumerable<T>
parameter by casting to certain interface types such as IList<T>
or ICollection<T>
. It will then use that Count method to do an actual Count()
operation. So it will go back down to O(1)
. But you still pay the minor overhead of the cast and interface call.
Solution 2:
The Enumerable.Count()
method checks for ICollection<T>
, using .Count
- so in the case of arrays and lists, it is not much more inefficient (just an extra level of indirection).