'시간함수'에 해당되는 글 1건

  1. 2006.12.22 배열 참조 속도에 관한것! 1

#include <stdio.h>
#include <time.h>

#define SIZE 10000

int a[SIZE][SIZE];

void main() {
       
       time_t start;        
       start = time (NULL);        
       
       printf("시작n");
       for(int i=0;i<SIZE;i++){
               for(int j=0;j<SIZE;j++){
                       a[i][j] = 0; //여기
               }
       }
       printf("끝 %ld n",time(NULL)-start);
}

////////////////////////////////////////////////////////////

#include <stdio.h>
#include <time.h>

#define SIZE 10000

int a[SIZE][SIZE];

void main() {
       
       time_t start;        
       start = time (NULL);        
       
       printf("시작n");
       for(int i=0;i<SIZE;i++){
               for(int j=0;j<SIZE;j++){
                       a[j][i] = 0;//요기!
               }
       }
       printf("끝 %ld n",time(NULL)-start);
}



////////////////////////////////////////////

심심해서 배열 참조 속도를 비교했더니

위의 소스코드는 내컴에서 1초정도..
아래 소스코드는 12초 걸리더라...

생각해보니 원인은 CPU캐쉬메모리 때문이지. 배열은 순서대로 저장되어있는데 여기갔다 저기갔다 하면서 데이터를 캐쉬메모리에 올려 놓지 못한채 따른 데이터로 접근 하기때문이지. 얼핏 영상처리 수업하며 흘려 들었던 적이 있는데, 생각보다 많이 차이 난다.

우음.

넋두리 2006. 12. 22. 21:19 ,