Middle
Kas peaks kasutama asünkroonsust, et arvutada suure massiivi elementide summa, mis sisaldab miljardit numbrit?
sobes.tech AI
Vastus AI-lt
Jah, asünkroonsuse kasutamine suurte massiivide elementide summa arvutamiseks, mis koosneb miljarditest numbritest, on põhjendatud. Selline ülesanne sobib hästi paralleelimiseks, kuna summa on assotsiatiivne operatsioon.
Massiivi saab jagada mitmeks osaks ja iga osa summa arvutada paralleelselt, kasutades näiteks Task või Parallel.For C#-s:
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
long[] largeArray = new long[1_000_000_000];
// Massiivi initsialiseerimine...
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($"Kokku summa: {totalSum}");
}
}
See lähenemine kiirendab arvutust märkimisväärselt, kasutades ära kõik protsessori tuumad.