【发布时间】:2017-01-07 01:20:35
【问题描述】:
我查看了 .NET Core 源代码,以了解当集合实现 IList 时,对 IEnumerable.Last() (LINQ) 的调用是否得到优化,经过一些快速基准测试后我怀疑是这种情况。 It turns out that yes, the input is specifically checked for IList,然而,甚至在此之前,检查输入是否实现IPartition。 IPartition is defined here,但我完全不明白它应该做什么。
IPartition 的目的是什么,它怎么可能比IList 的通常恒定时间索引更快(或者如果不是,为什么IPartition 的输入检查早于@987654331 @)?
【问题讨论】:
-
它似乎被
Take之类的方法用来创建数据的子集。请记住,在使用IQueryable等时,可以在数据完全加载之前调用许多 linq 方法。检查IPartition可能会进行一些偷偷摸摸的优化。