프로그램 최적화
시스템을 수정하여 어떠한 작업을 더 효과적으로 만드는 작업
(최적화 (정보 공학)에서 넘어옴)
프로그램 최적화(영어: 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이 작고 컴퓨터가 나누기, 곱셈보다 더하기, 루프 함수를 수행하는 쪽이 더 빠르다면 말이다.
같이 보기
편집각주
편집- ↑ Robert Sedgewick, Algorithms, 1984, p. 84
이 글은 컴퓨터 과학에 관한 토막글입니다. 여러분의 지식으로 알차게 문서를 완성해 갑시다. |