Хм ... то, что вы ищете, представляет собой простой стандартный векторно-матричный продукт:
V2.noalias() = V.transpose() * A;
.noalias()
не является обязательным, он только здесь, чтобы сэкономить вам один временный.
Если вам действительно нужна промежуточная матрица C
, то ваши два варианта должны быть одинаково быстрыми, чем ваш ручной цикл for, при условии, что вы исправите их, чтобы они вычисляли одно и то же:
C = V.asDiagonal() * A;
C = A.array().colwise() * V.array();
И не забудьте включить оптимизацию компилятора, например -O3 -march=native
.