Middle
Érdemes-e aszinkronitást alkalmazni egy milliárd számot tartalmazó nagy tömb elemeinek összegének kiszámításához?
sobes.tech MI
Válasz az MI-től
Igen, az aszinkronitás alkalmazása a nagy, milliárd számot tartalmazó tömb elemeinek összegének kiszámítására indokolt. Ilyen feladat jól párhuzamosítható, mivel az összeg egy asszociatív művelet.
A tömböt több részre lehet osztani, és minden rész összegét párhuzamosan lehet számítani, például Task vagy Parallel.For használatával C#-ban:
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
long[] largeArray = new long[1_000_000_000];
// A tömb inicializálása...
int processorCount = Environment.ProcessorCount;
long[] partialSums = new long[processorCount];
Parallel.For(0, processorCount, i =>
{
int start = i * largeArray.Length / processorCount;
int end = (i + 1) * largeArray.Length / processorCount;
long sum = 0;
for (int j = start; j < end; j++)
sum += largeArray[j];
partialSums[i] = sum;
});
long totalSum = 0;
foreach (var sum in partialSums)
totalSum += sum;
Console.WriteLine($"Összeg: {totalSum}");
}
}
Ez a megközelítés jelentősen felgyorsítja a számítást, kihasználva az összes rendelkezésre álló processzorkerékpárt.