C# 比较i4o与PLINQ的更大系列
我有一个问题要问任何有i4o或PLINQ经验的人。我需要查询一个大对象集合(大约400K)。逻辑非常简单明了。例如,有一个Person对象集合,我需要找到与相同的firstName、lastName、dateBorth或firstName/lastName的首字母等匹配的Person。使用LINQ to Object只是一个耗时的过程 我想知道我是否 或者PLINQ可以帮助提高查询性能。哪一个更好?如果有什么办法的话C# 比较i4o与PLINQ的更大系列,c#,linq,linq-to-objects,plinq,C#,Linq,Linq To Objects,Plinq,我有一个问题要问任何有i4o或PLINQ经验的人。我需要查询一个大对象集合(大约400K)。逻辑非常简单明了。例如,有一个Person对象集合,我需要找到与相同的firstName、lastName、dateBorth或firstName/lastName的首字母等匹配的Person。使用LINQ to Object只是一个耗时的过程 我想知道我是否 或者PLINQ可以帮助提高查询性能。哪一个更好?如果有什么办法的话 谢谢 我没有使用i4o,但我使用了PLINQ 如果不知道您试图改进的查询的细节
谢谢 我没有使用i4o,但我使用了PLINQ 如果不知道您试图改进的查询的细节,很难说哪一个(如果有的话)会有帮助 PLINQ允许在适用的情况下对查询进行多处理。然而,有时并行处理是没有帮助的 i4o看起来有助于索引,这将加快一些调用,但不会加快其他调用
底线是,这取决于正在运行的查询。对于400k对象,我想知道数据库(进程内或进程外)是否是更合适的答案。然后,这将抽象索引创建过程。特别是,任何数据库都将在不同的列上支持多个不同的索引,使得所有引用的查询都非常受支持,而不必为每个查询专门编写代码(让查询优化器来担心)
在内存中使用它可能是有效的,但是(使用vanilla.NET)可能需要进行更多的手动索引管理。听上去,i4o肯定值得研究,但我没有任何现有的比较数据。i4o:旨在通过使用像旧关系数据库那样的索引来加快使用linq的查询速度 PLinq:意味着使用额外的cpu内核来并行处理查询
如果性能是您的目标,取决于您的硬件,我建议使用i4o,它将带来极大的改进。谢谢您,Marc!因为我需要根据一些规则将这些400K对象相互匹配。正如我在原始帖子中所举的例子,我需要找到与“约翰·史密斯”匹配的记录。它可以是“J Smith”或“John S”或匹配的名字soundex等…我假设名字和姓氏是分开的。。。所以您有一系列选项,包括=,比如,SOUNDEX,等等,这些4000k行需要用10条规则相互匹配,所以您认为TSQL将比LINQ to OBject更有效,对吗?再次感谢。此外,用户设置的规则更具动态性。我们为他们提供了构建规则的UI,例如,用户可以创建一个只比较名字/姓氏的规则,或者为名字/姓氏和出生日期创建另一个规则,然后可能在姓氏上创建soundex,或者与姓氏的首字母组合。您必须分析。。。恐怕这是一个不可能回答的问题。