【发布时间】:2020-04-10 12:48:46
【问题描述】:
虽然 Eigen 是 C++ 库,C/C++ 使用 row-major 存储结构,但为什么 Eigen 更喜欢使用 column-major 存储顺序?从Why does MATLAB use column-major order? 的帖子中,我了解到 MATLAB 使用它是因为历史原因(由于 FORTRAN)。但据我所知,Eigen 一开始是基于 C++ 构建的。
在 Eigen Library 网站上它说:
Eigen 中的默认值是列优先。自然,Eigen 库的大部分开发和测试都是使用列优先矩阵完成的。这意味着,即使我们的目标是透明地支持列优先和行优先存储顺序,Eigen 库也可以很好地处理列优先矩阵。 (取自https://eigen.tuxfamily.org/dox/group__TopicStorageOrders.html)
可能由于经常使用 C++ 和 OpenCV,我的大脑倾向于以行优先的形式思考。使用列主矩阵开发和测试 Eigen 库是否有任何性能(缓存位置、加载/存储速度等)原因?
【问题讨论】:
-
This 可能是相关的。简短的回答是没关系。