http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=740 [복사]
소스코드 최적화 기법
첫째 최적화를 위한 방법의 첫째는 알고리즘을 선택하라는 것이다.
10,000의 정수배열이 있는데 이것을 퀵정렬과 거품정렬을 사용할시 차이는 엄청나다.
둘째 함수를 적절히 사용하라
함수를 사용하는 것은 사용하지 않는 것보다 분명히 속도면에서 불리하다.왜냐하면 같은 역할을 하더라도 함수를 사용하면 호출을 위한 사전절차가 더 포함되기 때문이다. 이를 오버헤드 현상이라고 한다 반면에 함수 호출의 장점이라면 컴파일 결과 만들어지는 실행 파일의 크기가 작아진다는 것이다. 그래서 속도와 크기와의 연관성을 잘 생각해서 함수를 사용해야 한다.
셋째 되도록 실수형 은 사용하지 마라
수치계산용 보조프로세서가 없는 경우에는 실수형의 연산은 너무도 더딘 속도이기 때문이다.(현재 하드웨어 발달상태를 봤을 때 이건 별 의미가 없을 것 같네요 ^^;;이 책이 좀 오래된 책이라서요-.-;;)
넷째 반복문 내를 최대한 간단히 하라
반복문은 for문,do… while문,while문 등이 있는데 이 내부에는 최대한 빠른 속도를 내도록 노력하라. 반복문이 만일 수천, 수만번 수행이 된다면 아주 작은 개선도 결과적으로 엄청난 시간 단축을 가져온다.
반복문 내를 간단히 하려면 함수호출을 줄이고 필요한 계산은 반복문 밖에서 다해놓는다.
다섯째 재귀호출 형태를 사용하지 마라.
재귀호출은 실행 속도면에서 바람직하지 못하다.이는 재귀호출 자체가 바로 함수의 호출이기 때문이다. 또 재귀호출은 시스템 내부의 스택을 사용함으로써 스택 넘침(Stack overflow)으로 인한 에러를 유발할 수 있어 위험하다.
또 명심해야할 것은 이 최적화의 단계는 항상 프로그램 작성시 최후의 단계여야 한다는 것
즉, 일단은 효율성보다는 읽기 쉬운 단순한 알고리즘을 사용하여 프로그램이 돌아가도록 해야 한다. 그러고 난 연후에야 최적화에 대해 고려해야 한다.
-출처:C로 배우는 알고리즘 중-
|
Hit : 8932 Date : 2007/06/02 10:18
|