实现您自己的 LINQ 和 IEnumerable [关闭]

2024-02-27

在我正在从事的一个项目中,确实有巨大的集合(1M-1B元素),并且大部分内容都被修改为集合。

它是一个实时应用程序,因此性能至关重要。

对于某些操作,例如 Reverse、BinarySearch(可能吗?)等,将比 Select 等其他操作遭受更多影响。

是否可以使用可能的 MoveNext、MovePrev 等实现自己的 IEnumerable 以及自己实现的利用这些功能的 LINQ 扩展?

如果这要发生,它将在项目结束时发生。因为我们需要先让它工作,然后让它更快。

总而言之,这不应该是太多的工作,对吧?


绝对有可能创建您自己的实现Enumerable这可能是某些情况的特例。您基本上想要检测自己的集合类型(或者可能只是诸如List<T>)并在适用的情况下使用更有效的实现。

我有一个示例项目 http://csharpindepth.com/Files/LinqIn60Minutes.zip我用它来演示“在一小时内实现 LINQ to Objects”,您可能想查看示例。这不是一个完整的实现,特别是less比真正的 LINQ to Objects 高效 - 但您可能仍然会发现它很有趣。

或者,您可能会发现i4o(索引 LINQ) http://www.codeplex.com/i4o开箱即用地完成您需要的一切 - 或者您为此做出贡献比从头开始更好。值得一看。

请记住,归根结底,LINQ 基本上是一个很好的设计加上语法糖。 C#编译器不知道anything特别关于System.Linq.Enumerable, 例如。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现您自己的 LINQ 和 IEnumerable [关闭] 的相关文章

随机推荐