【发布时间】:2018-11-08 08:33:46
【问题描述】:
在分析我的程序时,我发现以下几行是瓶颈
// 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除外)
【问题讨论】:
-
看起来 inpRow 是一个副本,有什么理由不能使用引用代替吗?
-
@JamesMitchell 谢谢你的回答!我不是 100% 确定,但 eigen 应该提供惰性评估的代理对象(类似于块)。所以应该没有副本。但我不确定
-
#define EIGEN_NO_DEBUG? -
@Rzu 已添加 :(
标签: c++ performance matrix eigen eigen3