C# 默认情况下,plinq会对Dictionary使用范围分区还是区块分区?如何强迫对方?
默认情况下,plinq会对字典使用范围分区还是块分区 这是我的用例:C# 默认情况下,plinq会对Dictionary使用范围分区还是区块分区?如何强迫对方?,c#,parallel-processing,plinq,C#,Parallel Processing,Plinq,默认情况下,plinq会对字典使用范围分区还是块分区 这是我的用例: Dictionary<string,string> asmachtas = new Dictionary<string,string>(); ... int sum = asmachtas.AsParallel().Sum(arg => myFunction(arg)); 我怎么能自己检查呢?如何强制执行其他类型的分区?范围分区仅适用于实现IList的集合。字典只实现IE
Dictionary<string,string> asmachtas = new Dictionary<string,string>();
...
int sum = asmachtas.AsParallel().Sum(arg => myFunction(arg));
我怎么能自己检查呢?如何强制执行其他类型的分区?范围分区仅适用于实现IList的集合。字典只实现IEnumerable而不是IList,所以将使用块分区
PLINQ使用的分区算法是一个实现细节,因此您实际上没有办法查找它。您可以将断点放入传递到Sum中的委托中,并从调用堆栈推断分区方案,但堆栈相当混乱。范围分区仅适用于实现IList的集合。字典只实现IEnumerable而不是IList,所以将使用块分区
PLINQ使用的分区算法是一个实现细节,因此您实际上没有办法查找它。您可以在传递给Sum的委托中放置断点,并从调用堆栈中推断分区方案,但堆栈相当混乱。正如Igor所说,查询将使用块分区
我想补充一点,将其转换为asmachtas.ToList.aspallel将使其使用范围分区。或者,如果您使用的是一个列表,您可以使用partitioner.Createasmachtas创建一个chunk partitioner,true。正如Igor所说,查询将使用chunk partitioning 我想补充一点,将其转换为asmachtas.ToList.aspallel将使其使用范围分区。或者,如果您使用的是一个列表,您可以使用partitioner.Createasmachtas创建一个chunk partitioner,true。提到AsParallel是由ParallelEnumerable定义的,所以我认为是另一种方式提到AsParallell是由ParallelEnumerable定义的,所以我认为是另一种方式