gpt4 book ai didi

c# - IPartition 在 .NET Core 中有什么作用?

转载 作者:太空狗 更新时间:2023-10-29 20:26:55 25 4
gpt4 key购买 nike

我查看了 .NET Core 源代码,以了解在集合实现 IList 时是否优化了对 IEnumerable.Last() (LINQ) 的调用经过一些快速基准测试后,我怀疑是这种情况。 It turns out that yes, the input is specifically checked for IList然而,甚至在此之前,它会检查输入是否实现了 IPartitionIPartition is defined here , 但我根本不明白它应该做什么。

IPartition 的目的是什么?它怎么可能比 IList 的通常恒定时间索引更快(或者如果不是,为什么输入检查 IPartition 早于 IList)?

最佳答案

当集合支持索引时,它是对作用于索引(Take/Skip 等)的可枚举方法的优化。 IIListProvider是相关的。

有几个implementations .在文件中搜索 IPartition .

issues关于这个。

IPartition允许将更高级别的操作委托(delegate)给基础集合。例如,new int[10].Skip(1)很慢,因为所有数据都经过两个 IEnumerable<int> .随着IPartition这实际上变成了 for (int i = 1 ... 9) emit(list[i]); 的实现.所以它不使用中间枚举器,而是调用比枚举稍快的列表索引器。

这是一个非常粗略的描述。我鼓励您查看 Github 讨论和代码。

关于c# - IPartition 在 .NET Core 中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39232868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com