Middle
Czy należy stosować asynchroniczność do obliczania sumy elementów dużej tablicy zawierającej miliard liczb?
sobes.tech AI
Odpowiedź od AI
Tak, zastosowanie asynchroniczności do obliczania sumy elementów dużej tablicy zawierającej miliard liczb jest uzasadnione. Takie zadanie dobrze się paralelizuje, ponieważ suma jest operacją asocjatywną.
Możesz podzielić tablicę na kilka części i obliczyć sumę każdej części równolegle, używając na przykład Task lub Parallel.For w C#:
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
long[] largeArray = new long[1_000_000_000];
// Inicjalizacja tablicy...
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($"Suma całkowita: {totalSum}");
}
}
Takie podejście znacznie przyspieszy obliczenia, wykorzystując wszystkie dostępne rdzenie procesora.