Multiplicação simples e rápida de matriz-vetor em C / C ++

Eu preciso de uso freqüente dematrix_vector_mult() que multiplica matriz por vetor, e abaixo está sua implementação.

Pergunta: Existe uma maneira simples de torná-lo significativamente, pelo menos duas vezes, mais rápido?

Observações: 1) O tamanho da matriz é de cerca de 300x50. Não muda durante a corrida. 2) Deve funcionar tanto no Windows quanto no Linux.

double vectors_dot_prod(const double *x, const double *y, int n)
{
    double res = 0.0;
    int i;
    for (i = 0; i < n; i++)
    {
        res += x[i] * y[i];
    }
    return res;
}

void matrix_vector_mult(const double **mat, const double *vec, double *result, int rows, int cols)
{ // in matrix form: result = mat * vec;
    int i;
    for (i = 0; i < rows; i++)
    {
        result[i] = vectors_dot_prod(mat[i], vec, cols);
    }
}

questionAnswers(3)

yourAnswerToTheQuestion