当前位置: 首页 > 编程语言 > C#

C#学习教程:.NET多线程和多处理:BadParallel.ForEach性能分享

时间:2023-04-10 19:58:44 C#

.NET多线程和多处理:BadParallel.ForEachPerformance我写了一个非常简单的“字数统计”程序,它读取文件并计算文件中每个单词的出现次数。下面是代码的一部分:classAlaki{privatestaticListinput=newList();privatestaticvoidexec(intthreadcount){ParallelOptionsoptions=newParallelOptions();options.MaxDegreeOfParallelism=threadcount;Parallel.ForEach(Partitioner.Create(0,input.Count),options,(range)=>{vardic=newDictionary();for(inti=range.Item1;i();...dic[token].Add(1);我替换了这个vardic=newDictionary();......否则dic[token]+=1;导致将近2倍的加速。但我的反问是:这重要吗?您的代码非常人为且不完整。并行版本最终会创建多个词典而不合并它们。这甚至不是真实情况。如您所见,细节很重要。您的示例代码很复杂,无法对Parallel.ForEach()进行详细说明。解决/分析真正的问题太简单了。只是为了好玩,这里有一个较短的PLINQ版本:以上是C#学习教程:.NET的多线程和多处理:糟糕的Parallel.ForEach性能如果它对任何人有用并且需要了解更多有关C#学习教程,请分享整个内容,我希望大家多多关注——File.ReadAllText("big.txt").Split().AsParallel().GroupBy(t=>t).ToDictionary(g=>g.Key,g=>g.数数());本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: