#1 addUpTo & 두 알고리즘 비교

유상우·2022년 8월 6일
0

1부터 n까지의 덧셈

# 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)

위의 두 알고리즘은 같은 값을 구할 수 있는 알고리즘이다.
하지만 어떤 알고리즘이 더 나은 알고리즘인지 무엇으로 판단하는가?

  • 이 알고리즘으로 실행했을 때 누가 더 빠른지?
  • 메모리 사용량이 더 작은지?
  • 코드를 더 쉽게 읽을 수 있는지?

상황에 따라 다르겠지만 그 상황에서 가장 효율적인 코드가 좋은 코드라 할 수 있다.

해당 알고리즘 속도 비교하기

1. 알고리즘 실행 시간에 따른 비교

let t1 = performance.now();
addUpTo(100000000);
let t2 = performance.now();
console.log(`Time Elapsed: ${(t2-t1)/1000} seconds.`}
  • #1 알고리즘의 속도(milliseconds)
  • #2 알고리즘

=> #2의 알고리즘이 실행 속도가 빠르고 코드가 간편하다는 점에서 더 효율적인 알고리즘이라 할 수 있다.

2. 연산 갯수에 따른 비교

#2 알고리즘

컴퓨터가 해당 알고리즘을 연산해야 되는 갯수가 3가지이지만,

#1 알고리즘

해당 알고리즘의 10000(n)의 값을 구하기 위해선 약 50000(5n+2) 이상의 연산이 이루어져야 하므로, 실행 시간이 오래 걸릴 수 밖에 없다.

따라서 알고리즘을 짤 때, 이 코드가 컴퓨터 메모리 또는 시간에 미칠 영향을 고려하여 코딩을 작성해야 한다.

references

#1 performance.now()
https://developer.mozilla.org/en-US/docs/Web/API/Performance/now

profile
Potentialist

0개의 댓글