c# - PLINQ 性能不佳

标签 c# plinq

我正在尝试实现 PLINQ 示例但面临以下问题 我的顺序查询比并行查询执行得更快。

这里是代码示例:

        Stopwatch sw = new Stopwatch();

        int[] vals = Enumerable.Range(0, Int16.MaxValue).ToArray();

        sw.Start();
        int[] x1 = vals.Where(x => x % 2 == 0).ToArray();
        sw.Stop();
        Console.WriteLine("Sequential Execution {0} milliseconds", sw.ElapsedMilliseconds);


        sw.Restart();
        int[] x2 = vals.AsParallel().Where(x => x % 2 == 0).ToArray();
        sw.Stop();
        Console.WriteLine("Parallel Execution {0} milliseconds", sw.ElapsedMilliseconds);

我的机器是 Pentium(R) 双核 我也尝试过 Quad - Core AMD Opteron(tm)。

相同的结果 并行查询比顺序查询运行得慢。 你能告诉我我的问题是什么吗?

谢谢。

最佳答案

我想这与一些开销有关。 您迭代的集合非常小(32k 短裤),对这些项目执行的操作微不足道。

在这种情况下,集合的分区、过滤和重新合并可能比在单个迭代中执行相同的操作要昂贵得多。

如果您的比较成本更高(例如搜索字符串)并且您的收藏量增加,您会看到结果发生变化。

关于c# - PLINQ 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10916190/

相关文章:

c# - PLINQ 查询给出溢出异常

c# - OperationContext 中的 header

c# - 在 WPF 中使用 Windows 资源管理器上下文菜单

C#最高字符串

c# - PLINQ AsParallel().ForAll() 访问资源

.net - NUnit测试PLINQ代码后,如何防止AppDomainUnloadedException?

c# - 在 C# 中声明类型同义词

c# - 从其他设备访问本地主机 WCF?

c# - 使不透明的 IEnumerable 查询并行 (PLINQ)

c# - 将线程本地数据与 PLINQ AsParallel() 一起使用?