gpt4 book ai didi

c# - PLINQ 没有提高性能

转载 作者:行者123 更新时间:2023-11-30 12:31:56 26 4
gpt4 key购买 nike

我写了一个 LINQ 来找出文本文件中唯一字符的频率。我还在 select 的帮助下将我的初始结果转换为一个对象。最终结果以列表的形式出现。以下是我使用的查询。

charNodes = inputString.GroupBy(ch => ch)
.Select((ch) => new TNode(ch.Key.ToString(),ch.Count()))
.ToList<TNode>();

我有一台四核机器在运行,上面的查询在 15 毫秒内运行。但奇怪的是,当我用 PLINQ 执行相同的查询时,它花费了更多时间。下面的查询用了大约 40 毫秒。

charNodes = inputString.GroupBy(ch => ch).AsParallel
.Select((ch) => new TNode(ch.Key.ToString(),ch.Count()))
.ToList<TNode>();

最糟糕的情况是下一个查询花费了大约 83 毫秒

charNodes = inputString.AsParallel().GroupBy(ch => ch)
.Select((ch) => new TNode(ch.Key.ToString(), ch.Count()))
.ToList<TNode>();

这里出了什么问题?

最佳答案

当出现此类问题时,答案总是相同的:PLINQ 开销高于 yield 。

发生这种情况是因为工作项非常小(按字符分组,或从琐碎的输入创建新对象)。当它们更大时效果会更好。

关于c# - PLINQ 没有提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com