2009-03-02 54 views
3

我有任何有i4o或PLINQ经验的人的问题。我有一个需要查询的大对象集合(大约400K)。逻辑非常简单直接。例如,有一个Person对象的集合,我需要找到与firstName,lastName,datebirth或FirstName/lastname的第一个首字母匹配的人员。这只是一个使用LINQ to Object的耗时过程。比较i4o和PLINQ的较大系列

我想知道如果i4o的(http://www.codeplex.com/i4o

或PLINQ能帮助提高查询性能。哪一个更好?如果有任何方法。

谢谢!

回答

5

对于400k个对象,我想知道数据库(在进程内还是在进程外)是否不是更合适的答案。然后这将抽象索引创建过程。特别是,任何数据库都将支持不同列上的多个不同索引,这使得引用的查询都可以非常支持,而不必为每个索引专门编写代码(只是让查询优化器担心)。

在内存中使用它可能是有效的,但是您可能(使用vanilla .NET)必须执行更多的手动索引管理。从它的声音来看,i4o肯定值得研究,但我没有任何现有的比较数据。

+0

谢谢Marc!因为我需要根据一些规则来匹配这些400K对象。作为我原来的帖子中的例子,我需要找到与“John Smith”相匹配的记录。它可以是“J史密斯”或“约翰S”或匹配名称soundex等... – 2009-03-02 04:05:52

0

我没有使用i4o,但我使用了PLINQ。

不知道你想提高的查询的具体细节,很难说哪个(如果有的话)会有帮助。

PLINQ允许在适用的情况下对查询进行多处理。然而,有时候并行处理不会有帮助。

i4o看起来像它有助于索引,这将加快一些呼叫,但不是其他人。

底线是,它取决于正在运行的查询。

3

i4o:意思是通过使用像旧关系数据库日那样的索引来加速使用linq进行查询。

PLinq:意味着使用额外的cpu核心来并行处理查询。

如果性能是您的目标,取决于您的硬件,我说与i4o一起,它会做出改进。