During profiling of my program i found that following lines is bottleneck
// Some big nested loop
{
const auto inpRow = inpMap.row(counter);
outMap.row(adjRow) -= inpRow;
outMap.row(colInd) += inpRow;
}
outMap
and inpMap
are Eigen::Map<Eigen::MatrixRX<Scalar>>
where Eigen::MatrixRX
defined as Eigen::Matrix<Scalar, -1, -1, Eigen::RowMajor>
i.e. row major matrix.
Is there a way to improve performance of such operations? (Except parallel for
of course)
There is not much you can do as such expressions should already be fully vectorized. Nevertheless here are some tips:
-O3 -march=native