정보 처리/알고리즘

알고리즘과 비슷하지만 다른 최적화(Optimization)란

본클라쓰 2008. 11. 26. 16:27

 

최적화란 프로그램을 좀 더 빨리, 좀 더 작게 개선하는 과정을 의미한다. 최적화을 위한 방법은 다음과 같다.

  1. 좋은 알고리즘을 선택하라.
  2. 함수를 적절히 사용하라.
  3. 반복문은 최대한 간단히 하라.
  4. 실수형은 사용하지 마라.
  5. 재귀 호출 형태를 사용하지 마라.

 

같은 문제를 해결하는 여러 가지의 알고리즘 중에서 가장 효율적인 것을 선택하는 것이 가장 근본적인 최적화 방법이다. 또한, 함수를 사용하는 것이 사용하지 않는 것보다 속도면에서는 불리하다. 왜냐하면 같은 역할을 하더라도 함수를 사용하면 함수 호출을 위한 사전 절차가 더 포함되기 때문이다. 이런 현상을 오버헤드(Over Head) 현상이라고 한다. 반면에 함수 사용의 장점은 컴파일 결과로 만들어지는 실행 파일의 크기가 작아진다. 또한, 반복문 내에 함수 호출을 없애고, 필요한 계산은 반복문 밖에서 다 해 놓을 것, 필요하다면 기계어로 직접 코딩하는 방법이 좋다.

 

재귀 호출은 시스템의 내부 스택을 사용함으로써 스택 넘침(Stack Overflow)으로 인한 에러를 유발할 수 있어 위험하다. 프로그램의 개발시에는 재귀 호출 형태를 사용하더라도, 최적화 단계에서는 재귀 호출을 제거해야 한다.

 

 

 

 

참고 

최적화 단계는 항상 프로그램 작성시 최후의 단계여야 한다. 즉, 일단은 효율성보다는 읽기 쉬운 단순한 알고리즘을 사용하여 프로그램이 돌아가도록 해야 한다. 그 후 최적화에 대해 고려해야 한다. 또한 메모리 절약을 위해 프로그램 코드를 단순화 시켜야 한다. 코드가 단순화 되면 기능성, 견고성, 속도향상, 메모리 절약 등의 결과를 얻을 수 있다.