티스토리 뷰

[프로그래밍 테크닉] C언어 소스 최적화 테크닉



   1. 반복문 안에서 변수 선언 및 초기화하지 않기

(1) 최적화되지 않은 방법

for(int i = 0 ; i < 10000 ; i++)
{
   int value = 0 ;
   cout << value ;
}

(2) 최적화된 방법 

int value ;
value = 10 ;

for(int i = 0 ; i < 10000 ; i++)
{
   cout << value ;
}


   2. 루프 안에서 조건 만족시 break 등으로 반복 줄이기

(1) 최적화되지 않은 방법

for(int i = 0 ; i < 100 ; i++)
{
   if(value[i] == 100)
      cout << value[i] ;
}

원하는 결과물에 따라서 다를 수 있지만 하나의 결과값만을 찾는 경우 위 소스와 같이 한다면
쓸데없이 나머지 루프를 반복하게 된다.


(2) 최적화된 방법

for(int i = 0 ; i < 100 ; i++)
{
   if(value[i] == 100){
      cout << value[i] ;
      break;
   }
}


   3. 멤버변수와 관련한 최적화


(1) 최적화되지 않은 방법


void Test::Init()
{
   for(int i = 0 ; i < m_nSize ; i++)
   {
      // 초기화
   }
}


(2) 최적화된 방법

void Test::Init()
{
   int size = m_nSize ;

   for(int i = 0 ; i < size ; i++)
   {
      // 초기화
   }
}


멤버변수의 경우 클래스의 this 포인터를 이용해 변수에 접근하기 때문에 for문 안에서 수시로
조건을 체크할 때 최적화된 방법보다 오버헤드가 걸리게 됩니다.


   4. 조건문 안에서의 조건 설정

(1) 최적화되지 않은 방법

int number = 10 ;

if(getSize() > 10 && number <= 10)
{
  .
      .
      .



(2) 최적화된 방법

int number = 10 ;

if(number <= 10 && getSize() > 10 )
{
      .
      .
      .
}

조건문안에서 조건의 참, 거짓 여부를 확실하게 구분 할 수 있는 식을 앞에 위치시킵니다.

댓글