Phi*_*Lab 9 optimization eigen eigen3
如何使用 Eigen3 执行逐元素乘法?
做
a = a.cwiseProduct(b);
Run Code Online (Sandbox Code Playgroud)
运行到位?或者是
a.array() *= b.array();
Run Code Online (Sandbox Code Playgroud)
在风格和性能方面更好的解决方案?
两个表达式都应该生成相同的代码(使用合理优化的编译器),所以这更像是一个品味问题。
如果你正在做大多元为单位的运算a和b你应该把他们定义为Eigen::Array(代替Eigen::Matrix)和只写a*=b;。如果您稍后需要访问a或b以矩阵方式访问,您仍然可以使用a.matrix().