루프 풀기(loop unrolling)
before
int i, j = 10; for(i=0;i<20;i++){ function(j); }
실행시간 : real 0m0.00s |
after
int i,j = 10; for(i=0;i<20;i+=4){ function(j); function(j); function(j); function(j); } 실행시간 : real 0m0.002s |
루프 병합()
before
int a[10],i,sum=0; for(i=0;i<10;i++) a[i] = i+1; for(i=0;i<10;i++) sum += a[i]; |
after
int a[10],i,sum=0; for(i=0;i<10;i++){ a[i]=i+1; sum+=a[i]; } |
필요 없이 루프를 끝까지 돌리지 마라
루프 변수
register unsigned int loop_var; //네이비트 데이터 타입..그 중에서 unsigned가 더 낫고 register로 하면 더 낫다
루프를 빠르게 하는 표현
마이크로프로세서에 따라 다운 카운팅이 더 효과적일 때도 있다. for(i=10;i != 0 ; i--) {} 이런 표현을 더 빠르게 하면 for(i=10;i--;){} 아래도 같은 의미 for(i=10;i;i--){} 10부터 1까지 반복수행하고 0이 되면 종료한다 |
함수를 반복적으로 부르는 대신에 함수안에 루프를 넣으면 더 낫다
'컴퓨터 과학 & 영상처리 관련 > 임베디드' 카테고리의 다른 글
컴파일러를 사용한 최적화 (0) | 2012.06.06 |
---|---|
최적화를 부르는 표현 (0) | 2012.06.06 |
다중 분기문을 효과적으로 사용하는 방법 (0) | 2012.06.06 |
메모리는 돈이다 (0) | 2012.06.05 |
함수, 생각없이 쓰면 낭패본다. (0) | 2012.06.05 |