Middle
Миллиард саннан тұратын үлкен массивтің элементтерінің сомасын есептеу үшін асинхронды қолдану керек пе?
sobes.tech AI
AI-дан жауап
Иә, миллиард саннан тұратын үлкен массивтің элементтерінің сомасын есептеу үшін асинхронды қолдану орынды. Мұндай тапсырма жақсы параллелденеді, себебі сомалау — ассоциативті операция.
Массивті бірнеше бөлікке бөлуге және әр бөліктің сомасын параллель есептеуге болады, мысалы, C#-та Task немесе Parallel.For пайдалана отырып:
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
long[] largeArray = new long[1_000_000_000];
// Массивті инициализациялау...
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($"Жалпы сомасы: {totalSum}");
}
}
Мұндай тәсіл барлық қол жетімді процессор ядроларын пайдалану арқылы есептеуді айтарлықтай жылдамдатады.