Czy ktoś może mi powiedzieć, jaki jest poprawny kod Plinq? Sumuję pierwiastek kwadratowy z bezwzględnej wartości sinusa każdego elementu dla podwójnej tablicy, ale Plinq daje mi zły wynik.Plinq daje inne wyniki od Linq - co robię źle?
Wyjście z tego programu jest:
LINQ łączna = 75,8310477905274 (poprawne) Plinq łączna = +38,0263653589291 (około połowa tego, co powinno być)
muszę robić coś złego, ale nie mogę pracy, co ...
(biegnę to z Visual Studio 2008 na Core 2 Duo systemu Windows 7 x64 PC.)
Oto kod:
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);
}
}
}