c# – PLINQ没有提高性能

发布时间:2020-08-01 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了c# – PLINQ没有提高性能脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我写了一个LINQ来查找文本文件中唯一字符的频率.我还在select的帮助下将我的初始结果转换为一个对象.最终的结果以List的形式出现.
以下是我使用过的查询.

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

我有一个四核机器运行,上面的查询运行在15ms.但奇怪的是,我需要更多的时间PLINQ相同的查询.下面一个花了大约40ms.

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开销高于收益.

发生这种情况是因为工作项非常小(通过char分组,或者从普通输入创建新对象).当它们更大时,效果会更好.

总结

以上是脚本之家为你收集整理的c# – PLINQ没有提高性能全部内容,希望文章能够帮你解决c# – PLINQ没有提高性能所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入脚本之家官方QQ群:1065694478
脚本之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!