在对程序进行性能分析时,我发现以下几行是瓶颈
// Some big nested loop
{
const auto inpRow = inpMap.row(counter);
outMap.row(adjRow) -= inpRow;
outMap.row(colInd) += inpRow;
}
outMap
和inpMap
是Eigen::Map<Eigen::MatrixRX<Scalar>>
,其中Eigen::MatrixRX
定义为Eigen::Matrix<Scalar, -1, -1, Eigen::RowMajor>
,即行主矩阵。
是否有一种方法可以改善此类操作的性能? (当然parallel for
除外)
答案 0 :(得分:1)
您无能为力,因为这样的表达式应该已经被完全矢量化了。不过,这里有一些提示:
-O3 -march=native