PLINQ性能不佳

Mic*_*dze 3 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);
Run Code Online (Sandbox Code Playgroud)

我的机器是Pentium(R)Dual-Core我也尝试过四核AMD Opteron(tm).

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

谢谢.

Joa*_*mer 5

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

在这种情况下,集合的划分,过滤和重新划分可能比在单次迭代中执行收集更加昂贵.

如果您的比较更昂贵(例如搜索字符串)并且您的收藏增长,您会看到结果发生变化.