Sobes.tech
Middle

Bir milliard raqam o'z ichiga olgan katta massiv elementlarining yig'indisini hisoblash uchun asinxronlikni qo'llash kerakmi?

sobes.tech AI

AIdan javob

Ha, milliardlab sonlar bilan katta massiv elementlarining yig'indisini hisoblash uchun asinxronlikni qo'llash asosli. Bunday vazifa yaxshi parallelizatsiya qilinadi, chunki yig'indi assotsiativ operatsiya.

Massivni bir nechta qismga bo'lish va har bir qismining yig'indisini parallel ravishda hisoblash mumkin, masalan, C# da Task yoki Parallel.For yordamida:

using System;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        long[] largeArray = new long[1_000_000_000];
        // Massivni boshlash...

        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($"Jami summa: {totalSum}");
    }
}

Bu yondashuv barcha mavjud protsessor yadrolarini ishlatib hisoblashni sezilarli darajada tezlashtiradi.