Скажем, у меня есть два метода:
public BigInteger PFactorial(int n)
{
return Enumerable.Range(1, n)
.AsParallel()
.Select(i => (BigInteger)i)
.Aggregate(BigInteger.One, BigInteger.Multiply);
}
public BigInteger Factorial(int n)
{
BigInteger result = BigInteger.One;
for(int i = 1; i <= n; i++)
result *= i;
return result;
}
Были получены следующие результаты:
PFactorial(25000) -> 0,9897 seconds
Factorial(25000) -> 0,9252 seconds
Я понимаю, что у PLINQ есть некоторые накладные расходы из-за установки потоков, но с таким большим n
я ожидал, что PLINQ будет быстрее.
Вот еще один результат:
PFactorial(50000) -> 4,91035 seconds
Factorial(50000) -> 4,40056 seconds