Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较i4o与PLINQ的更大系列_C#_Linq_Linq To Objects_Plinq - Fatal编程技术网

C# 比较i4o与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经验的人。我需要查询一个大对象集合(大约400K)。逻辑非常简单明了。例如,有一个Person对象集合,我需要找到与相同的firstName、lastName、dateBorth或firstName/lastName的首字母等匹配的Person。使用LINQ to Object只是一个耗时的过程

我想知道我是否

或者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,或者与姓氏的首字母组合。您必须分析。。。恐怕这是一个不可能回答的问题。