프로그램의 규모는 시간이 지날수록 방대해지고 있습니다. 즉, 처리해야하는 데이터의 양이 많아진다는 것입니다. 입력하는 데이터의 양이 적은 경우에는 무시해도 크게 상관이 없을 수 있지만 그 양이 많아지면 알고리즘 간의 효율성 차이는 커질 수 밖에 없습니다.
입력 데이터의 개수 | 알고리즘 A($n^2$) | 알고리즘 B($2^n$) |
---|---|---|
n = 6 | 36 초 | 64 초 |
n = 100 | 10,000 초 | $2^{100}초 = 4 * 10^{22}년$ |
위 표에서 알 수 있듯이 입력한 데이터의 개수가 6개 미만일 경우에는 알고리즘 A와 B의 실행 속도 차이가 2배를 넘지 않지만, 입력 개수가 100개라고 가정한다면 실행 속도 차이는 엄청나게 커집니다.
<aside> 💡 효율적인 알고리즘이란? 알고리즘이 수행을 시작하여 결과가 도출될 때까지 실행에 걸리는 시간이 짧고 연산하는 컴퓨터 내의 메모리와 같은 자원을 덜 사용하는 것이 효율적이라고 할 수 있습니다.
</aside>
위에서 살펴본 것처럼 서로 다른 알고리즘을 비교하려면 반드시 동일한 하드웨어를 사용한 상태에서 알고리즘의 실행 시간을 측정해야 합니다. 즉, 알고리즘 A는 일반 개인용 컴퓨터에서 측정하고, 알고리즘 B는 수퍼 컴퓨터에서 측정을 한다면 측정 결과는 객관성이 없게 됩니다.
또한 알고리즘을 측정할 때 사용하는 소프트웨어의 환경도 고려되어야 합니다. C 언어와 같은 컴파일 언어를 사용한 경우는 베이직과 같은 인터프리터 언어를 사용한 경우보다 실행 속도가 빠릅니다.
TypeScript : 컴파일 언어
JavaScript : 인터프리터 언어