다음과 같은 간단한 구조의 반복문이 2개 있다.

   

 

 

 

2개는 기능상 동일한 흐름을 가지고 동작하는 것을 확인할 수 있지만, 다음과 같은 반복문에는 5배의 반복 횟수 차이가 있다.

2개 프로그램에 대한 수행시간을 확인해보면 다음과 같은 결과를 얻는다.

 

 

 

 

 

조금 더 반복 횟수와 증가 크기를 확장하여 수행시간을 측정해보았다.

 

 

프로그램을 총 10번의 실행으로 평균치를 구한 결과이다.

시간 측정 결과 증가폭이 클수록 다음과 같이 수행시간이 줄어들었음을 확인할 수 있었다.

 

 

 

 

다음으로 처음 예제 반복문에 대한 Assembly 코드를 비교하였다.

 

 

 

라인수는 확실히 오른쪽이 늘어난 것을 확인할 수 있다.

하지만 오른쪽 반복문이 속도면에서는 우월함을 보이고 있다.

2개 반복문이 차이라고 한다면 반복문 안에서 수행하는 함수 콜 갯수의 문제 또는 반복 횟수에 대한 제어의 문제일 것이다.

 

반복문 루틴을 돌면서 반복할 것인지에 대한 것을 제어문을 통하여 체크를 하게 되는데,
문제는 여기서 생기는 파이프라이닝에서 제어 헤저드로 인한 붕괴 현상일 것으로 생각된다.

 

 

 

 

코드의 가독성이나 관리측면에서는 왼쪽의 반복문 코드가 확고하나 제약적인 상황(임베디드 관련)의 프로그램을 위해서라면,

오른쪽과 같이 제어문에 대한 횟수를 줄이는 것이 속도면에서 성능을 올리는데 더 효율적이지 않을까 생각한다.

뭐든 Trade-Off 이겠지만...

Posted by Programist
,