Eigen :: SelfAdjointView :: rankUpdate慢于A + = w * w.transpose()

时间:2018-10-19 08:33:32

标签: linear-algebra eigen eigen3

使用Eigen :: Matrix4d测试的Eigen :: SelfAdjointView :: rank更新速度

与天真A + = w * w.transpose()相比 而且慢了2倍。

  1. 我做错了什么?
  2. 我可以加快计算速度吗?

1 个答案:

答案 0 :(得分:2)

对于固定大小小的表达式,您无法使用SelfAdjointView::rankUpdate保存任何内容,而是增加了开销,因为它需要确保仅修改一半的元素。您的情况很简单

A.noalias() += w*w.adjoint();

应该给出接近最佳的代码(添加.noalias()可以避免将其复制到临时文件中。)