Утро вечера мудренее... Вот таким образом получается более чем в 2 раза быстрее, чем предыдущий вариант, хотя и все равно в 2 раза медленнее чем на C. Интересно, нельзя ли это еще ускорить без значительной потери читабельности и, желательно, без потери безопасности?
for (int l = 0; l < T; l++)
{
Vector4f v0,v1,v2,v3;
for (int i = 0; i < N; i+=4)
{
v0 = v1 = v2 = v3 = Vector4f.Zero;
for (int j = 0; j < n; j++)
{
v0 += A[i*n+j]*B[j];
v1 += A[(i+1)*n+j]*B[j];
v2 += A[(i+2)*n+j]*B[j];
v3 += A[(i+3)*n+j]*B[j];
}
C[i>>2] = VectorOperations.HorizontalAdd(VectorOperations.HorizontalAdd(v0,v1),VectorOperations.HorizontalAdd(v2,v3));
}
}