[methodology] row major와 columnm major
Updated:
개요
- 다차원 배열을 선형 저장소에 저장하는 방법
- row major
- 행 순서로 저장
- a11, a12, a13, a21, a22, …
- C/C++/Objective-C, PL/I, Pascal, Speakeasy, SAS
- columnm major
- 열 순서로 저장
- a11, a21, a31, a12, a22, …
- Fortran, MATLAB, GNU Octave, Julia, S, S-PLUS, R, Scilab, Yorick, Rasdaman
- 순서가 중요한 이유
- 캐시
- 3X3 배열에서 순차 접근하고 한번에 3개씩 데이터를 가져와서 캐시에 저장한다고 가정
- row major
- 저장소 접근 3회, 캐시 접근 6회
- columnm major
- 저장소 접근 9회, 캐시 접근 0회
- 캐시 접근 보다 저장소 접근이 훨씬 느리므로 접근 순서에 따른 성능차이 발생
- row major
- 언어나 라이브러리에 따라 접근 순서를 유의하며 사용 권장