对于有i4o或PLINQ经验的人,我有一个问题。我有一个需要查询的大对象集合(大约400K)。逻辑非常简单明了。例如,有一个Person对象的集合,我需要找到匹配相同firstName,lastName,datebirth或FirstName / lastname的第一个首字母等的人。这只是一个使用LINQ to Object的耗时过程。 / p>
我想知道i4o (http://www.codeplex.com/i4o)
或PLINQ可以帮助提高查询性能。哪一个更好?如果那里有任何方法。
谢谢!
答案 0 :(得分:5)
对于400k对象,我想知道数据库(进程内或进程外)是不是更合适的答案。然后,它抽象索引创建过程。特别是,任何数据库都将支持不同列上的多个不同索引,使得所引用的查询都非常可支持,而无需为每个列专门编写代码(只是让查询优化器担心它)。
在内存中使用它可能是有效的,但是你可能(使用vanilla .NET)需要进行更多的手动索引管理。通过它的声音,i4o肯定值得研究,但我没有任何现有的比较数据。
答案 1 :(得分:3)
i4o:旨在通过使用旧关系数据库天等索引来加速使用linq进行查询。
PLinq:意味着使用额外的cpu内核来并行处理查询。
如果性能是您的目标,取决于您的硬件,我说使用i4o它将会有所改善。
答案 2 :(得分:0)
我没有使用过i4o,但我使用过PLINQ。
如果您不了解查询的具体信息,那么您很难说哪些(如果有的话)会有所帮助。
PLINQ允许在适用的情况下对查询进行多处理。然而,有时候并行处理无济于事。
i4o看起来有助于编制索引,这会加快某些通话速度,但不会加快其他通话速度。
底线是,它取决于正在运行的查询。