소스코드리뷰(XXXII) 한번의 루프로 최대한 처리하라
[목차(도우미)]
오랜만에 직원의 개발 소스코드를 보았더니, 조언할 일이 생겼다.여러가지 기존의 소스 코드를 재조합해서 붙여 만들다 보면 너저분한 것은 물론이요, 처리가 뿔뿔이 흩어져 있는 것이 보인다.
- for K= 0 to N
- '...
- array(K) = some_value(K)*Math.PI
- next
- for K= 1 to N
- '...
- arrayB(K) = some_time(K-1)*array(K)
- next
- for K= 0 to N
- '...
- arrayC(K) = some_value(K)*array(K)
- next
세개의 루프가 존재하는데 초기 조건이 다르기 때문에 배열의 첨수(Index)를 나누어야 하는 것이다.
이런 경우 루프를 세번 돌려야 하기 때문에 근소한 차이일 수 있지만 계산 속도가 느려진다. 배열을 이동하는 시간이 들기 때문이다. 그리고 소스 코드를 유지보수하려면 한개의 루프로 고쳐주어야 한다.
"K = 0" 에 관한 부분을 특이점(singular point)으로 취급하여 초기 조건을 처리하도록 한다.
'연구개발 이야기' 카테고리의 다른 글
OBD II 를 이용한 차량 정보 감시/프로그래밍 (1) | 2011.06.14 |
---|---|
인스톨러(*.msi) 에 환경변수 경로를 추가하는 방법 (0) | 2011.06.11 |
소스코드리뷰(XXXII) 한번의 루프로 최대한 처리하라 (0) | 2011.05.21 |
리눅스 GNU C++에서 타이머 컴포넌트를 만들기 (4) | 2011.04.13 |
[메모] php에서 https로의 소켓 접속을 하려면 (0) | 2011.03.23 |