Maneira mais rápida de fazer adição matricial multidimensional?

Eu tenho uma matriz A de tamanho (m * l * 4) e o tamanho de m é de cerca de 100.000 e l = 100. o tamanho da lista é sempre igual a n <= m. Eu queria fazer adição de matriz de determinada lista de índices. Eu escrevi essa função e tenho que chamá-la várias vezes.

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];
    }
}

}

Eu uso o gprof para calcular quanto tempo leva cada parte da função no código inteiro e eu encontrei meus 60% do tempo gasto pela função MatrixAddition. Existe alguma maneira alternativa de escrever essa função para reduzir meu tempo de execução.

tempo segundos segundos chama ms / chama ms / nome da chamada
52,00 7,85 7,85 20 392,60 405,49 MatrixAddition (int, int, std :: vector> &, int ***, int ***, int)