我已经为我构建的集合实现了IEnumerable,并且(尽管我还没有测试过它们),Seq值似乎正常工作。当我的集合值的本机性能优于使用Seq的基于IEnumerable的函数时,是否可以覆盖一些Seq值,例如“last”?我没有找到有关覆盖Seq。
的任何信息答案 0 :(得分:2)
否 - 无法覆盖Seq
模块中的功能。但是,其中一些确实尝试通过检查输入值(您传递它们的seq<'T>
实例)来优化性能,以查看它是IList<'T>
还是'T[]
的实例;如果是,则函数将采用一些优化的代码路径。例如,如果将数组('T[]
)传递给Seq.length
,则可以使用数组的.Length
属性快速确定长度。
如果您坚持使用Seq
模块,我能想到的唯一性能优化就是让您的收藏集同时实施ICollection<'T>
和/或IList<'T>
。这可能会优化某些情况,但不会是所有情况。