Linq Count() 的速度是快还是慢于 List.Count 或 Array.Length?

29 浏览
0 Comments

Linq Count() 的速度是快还是慢于 List.Count 或 Array.Length?

LINQ中的Count()方法和List<>.Count或者Array.Length哪一个更快或者更慢?

admin 更改状态以发布 2023年5月22日
0
0 Comments

Enumerable.Count()方法检查ICollection,使用.Count-所以在数组和列表的情况下,它并不更加低效(只是多了一层间接访问)。

0
0 Comments

一般而言,LINQ的Count操作比较慢,一般是O(N)的时间复杂度,而List.Count和Array.Length则保证是O(1)的时间复杂度。

然而,在某些情况下,LINQ会特殊处理IEnumerable参数,将其强制转换为某些接口类型,例如IList或ICollection。然后它将使用该接口的Count方法来执行实际的Count()操作,因此将回到O(1)。但是,您仍需要付出强制转换和接口调用的轻微开销。

0