# 1
function addUpTo(n) {
let total = 0;
for (i = 1; i <= n; i++) {
total += i;
}
return total;
}
addUpTo(n);
# 2
function addUpTo(n) {
return n * (n+1) / 2;
}
addUpTo(n)
위의 두 알고리즘은 같은 값을 구할 수 있는 알고리즘이다.
하지만 어떤 알고리즘이 더 나은 알고리즘인지 무엇으로 판단하는가?
상황에 따라 다르겠지만 그 상황에서 가장 효율적인 코드가 좋은 코드라 할 수 있다.
let t1 = performance.now();
addUpTo(100000000);
let t2 = performance.now();
console.log(`Time Elapsed: ${(t2-t1)/1000} seconds.`}
=> #2의 알고리즘이 실행 속도가 빠르고 코드가 간편하다는 점에서 더 효율적인 알고리즘이라 할 수 있다.
#2 알고리즘
컴퓨터가 해당 알고리즘을 연산해야 되는 갯수가 3가지이지만,
#1 알고리즘
해당 알고리즘의 10000(n)의 값을 구하기 위해선 약 50000(5n+2) 이상의 연산이 이루어져야 하므로, 실행 시간이 오래 걸릴 수 밖에 없다.
따라서 알고리즘을 짤 때, 이 코드가 컴퓨터 메모리 또는 시간에 미칠 영향을 고려하여 코딩을 작성해야 한다.
#1 performance.now()
https://developer.mozilla.org/en-US/docs/Web/API/Performance/now