誰でも正しいPlinqコードを教えていただけますか?私はダブル配列の各要素の正弦の絶対値の平方根を足していますが、Plinqは私に間違った結果を与えています。このプログラムからPlinqはLinqとは異なる結果を出します - どうしたのですか?
出力は次のとおりです。
のLINQ集計= 75.8310477905274(正しい) PLINQの集計= 38.0263653589291(それがどうあるべきか半分程度)
私が何か間違ったことをやっている必要がありますが、私はできません
(。私はCore 2 DuoプロセッサのWindows 7のx64 PC上のVisual Studio 2008でこれを実行している)何...うまく
ここでは、コードです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
double[] array = new double[100];
for (int i = 0; i < array.Length; ++i)
{
array[i] = i;
}
double sum1 = array.Aggregate((total, current) => total + Math.Sqrt(Math.Abs(Math.Sin(current))));
Console.WriteLine("Linq aggregate = " + sum1);
IParallelEnumerable<double> parray = array.AsParallel<double>();
double sum2 = parray.Aggregate((total, current) => total + Math.Sqrt(Math.Abs(Math.Sin(current))));
Console.WriteLine("Plinq aggregate = " + sum2);
}
}
}