소스코드리뷰(XXXII) 한번의 루프로 최대한 처리하라
[목차(도우미)]
오랜만에 직원의 개발 소스코드를 보았더니, 조언할 일이 생겼다.
여러가지 기존의 소스 코드를 재조합해서 붙여 만들다 보면 너저분한 것은 물론이요, 처리가 뿔뿔이 흩어져 있는 것이 보인다.
세개의 루프가 존재하는데 초기 조건이 다르기 때문에 배열의 첨수(Index)를 나누어야 하는 것이다.
이런 경우 루프를 세번 돌려야 하기 때문에 근소한 차이일 수 있지만 계산 속도가 느려진다. 배열을 이동하는 시간이 들기 때문이다. 그리고 소스 코드를 유지보수하려면 한개의 루프로 고쳐주어야 한다.
"K = 0" 에 관한 부분을 특이점(singular point)으로 취급하여 초기 조건을 처리하도록 한다.
여러가지 기존의 소스 코드를 재조합해서 붙여 만들다 보면 너저분한 것은 물론이요, 처리가 뿔뿔이 흩어져 있는 것이 보인다.
- 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 |
리눅스 GNU C++에서 타이머 컴포넌트를 만들기 (4) | 2011.04.13 |
[메모] php에서 https로의 소켓 접속을 하려면 (0) | 2011.03.23 |