Более быстрый способ сделать многомерное матричное сложение?

У меня есть матрица размера A (m * l * 4), а размер m составляет около 100 000, а l = 100. размер списка всегда равен n и n <= m. Я хотел сделать матричное сложение данного списка индексов. Я написал эту функцию и должен вызывать эту функцию много раз.

void MatrixAddition(int l, int n, vector<int>& list, int ***A,int ***C,int cluster)
{
    for(int i=0;i<l;i++)
    {
         for(int j=0;j<4;j++)
              C[cluster][i][j]=0;
    }   

for (int i = 0; i < l; i++)
{
        for(int j=0;j<n;++j)
    {
        for(int k=0;k<4;k++)
            C[cluster][i][k]+=A[list[j]][i][k];
    }
}

}

Я использую gprof, чтобы вычислить, сколько времени занимает каждый фрагмент функции во всем коде, и я обнаружил, что 60% времени занято функцией MatrixAddition. Есть ли альтернативный способ написать эту функцию, чтобы сократить время выполнения.

время секунды секунды звонки мс / звонок мс / имя звонка
52,00 7,85 7,85 20 392.60 405,49 MatrixAddition (int, int, std :: vector> &, int ***, int ***, int)

Ответы на вопрос(2)

Ваш ответ на вопрос