프로그램 최적화

시스템을 수정하여 어떠한 작업을 더 효과적으로 만드는 작업

프로그램 최적화(영어: program optimization) 또는 소프트웨어 최적화(영어: software optimization)는 컴퓨터 과학에서 시스템을 수정하여 어떠한 면의 작업이 더 효과적으로, 또는 자원을 덜 사용하도록 만드는 작업을 말한다.[1] 이를테면, 컴퓨터 프로그램을 더 빠르게 실행하거나 기억 장치나 자원을 덜 차지하게 하여 운영케 하거나, 전력을 덜 쓰게 함으로써 최적화할 수 있다. 이러한 시스템은 인터넷과 같은 완전한 네트워크나 컴퓨터의 연결을 통해 하나의 컴퓨터 프로그램으로 실행될 수 있다.

기본 편집

계산 작업은 여러 방식에 따라 효율성이 달라진다. 이를테면, 1에서 N까지의 모든 정수를 합하는 다음의 C 코드를 보라.

 int i, sum = 0;
 for (i = 1; i <= N; i++)
   sum += i;
 printf ("합: %d\n", sum);

아래의 코드는 수학 공식을 사용하여 다시 구성한 것이다: (산술 오버플로우가 없다는 가정 아래)

 int sum = (N * (N+1)) / 2;
 printf ("합: %d\n", sum);

그러므로, 자동으로 완료되는 최적화는 비록 둘 다 기능이 똑같이 수행되지만 계산하기에 더 효과적인 방식을 채택하는 것이다. 그러나 성능 상의 중대한 개선은 실제 문제만 해결하고 부가되는 기능을 제거함으로써 이룩할 수 있다.

최적화는 언제나 명백하거나 직관적인 과정인 것은 아니다. 위의 예시에서 '최적화된' 버전은 원래의 소프트웨어보다 실제로 더 느리게 동작할 수도 있다. 이를테면 N이 작고 컴퓨터가 나누기, 곱셈보다 더하기, 루프 함수를 수행하는 쪽이 더 빠르다면 말이다.

같이 보기 편집

각주 편집

  1. Robert Sedgewick, Algorithms, 1984, p. 84