티스토리 뷰

int data[100][10];

int sum=0;



            A                                                    B


for(int i=0;i<100;++i)            for(int j=0;j<10;++j)            

{                                                      {

for(int j=0;j<10;++j)            for(int i=0;i<100;++i)

{                                                    {

sum+=data[i][j];                sum+=data[i][j];

}                                                    }

}                                                      }


이 둘의 속도 차이는 있다.

B가 더 빠르다.

우선 차이는 A는 for문 한번당 10개의 일을 100번 하는 것이고

B는 for문 한번당 100개의 일을 10번씩 하는 것인데

이론적으론 같은 연산량이지만

일부 상황에서 (병렬 처리 등)에서 달라질 수 있으며


또, 캐시 히트율이 다르다. 배열은 일차원으로 저장된다.

공간적 지역성의 개념에 의해 할당된 순서대로 캐시에 가져오는 것이 더 빠르다.


이해가 안되나? 이 글을 읽어보게나.

(영어를 지원하지 않는데 한국어를 지원하는 아이러니... 심지어 번역기 돌린듯)

http://code.i-harness.com/ko/q/979d04

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함