Почему Eigen по умолчанию использует Column-Major вместо Row-Major? - PullRequest
0 голосов
/ 10 апреля 2020

Несмотря на то, что Eigen является библиотекой C ++, а C / C ++ использует структуру хранения на уровне строк, почему Eigen предпочитает использовать порядок хранения на уровне столбцов? От Почему MATLAB использует порядок по столбцам? post, я понимаю, что MATLAB использует его по историческим (из-за FORTRAN) причинам. Но Eigen построен на C ++ в начале, насколько я знаю.

На веб-сайте Eigen Library написано:

По умолчанию в Eigen используется значение column-major. Естественно, большая часть разработки и тестирования библиотеки Eigen, таким образом, выполняется с помощью матриц по основным столбцам. Это означает, что, хотя мы стремимся прозрачно поддерживать порядок хранения по столбцам и по строкам, библиотека Eigen может лучше всего работать с матрицами по столбцам. (взято из https://eigen.tuxfamily.org/dox/group__TopicStorageOrders.html)

Возможно, из-за очень частого использования C ++ и OpenCV мой мозг склонен мыслить в форме мажорной строки. Существуют ли какие-либо соображения по производительности (локальность кэша, скорость загрузки / хранения и т. Д. 1015 *.), По которым можно разрабатывать и тестировать библиотеку Eigen с матрицами основных столбцов?

...