프로그램 최적화

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

기본 
계산 작업은 여러 방식에 따라 효율성이 달라진다. 이를테면, 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이 작고 컴퓨터가 나누기, 곱셈보다 더하기, 루프 함수를 수행하는 쪽이 더 빠르다면 말이다.

같이 보기 
 캐시
 쿼리 이론
 추상 해석
 시뮬레이션
 느긋한 계산법
 LLVM
 성능 분석
 메모이제이션
 최악 실행 시간

각주 

프로그래밍 언어 주제