프로그래머스 코딩테스트 문제를 푸는 도중 분명 속도적으로 더 개선할 수 있는 부분이 없다고 생각이 드는데 효율성 검사에서 하나를 통과하지 못하는 상황을 겪게 되었다.
한참을 고뇌하던 중 문득 ++ 증감연산자를 +=1 할당연산자로 바꾸자 효율성 테스트를 통과할 수 있었다.
왜 이런 일이 일어나는 것인지 궁금하여 이런저런 글들을 비교해보았지만 명확하게 답을 제시해주는 글을 찾을 수가 없었다.
그 원인은 차차 알아보기로 하고 우선 어느 정도의 속도 차이가 나는지 알아보고 싶었다.
const allocationTest = (x) => {
console.time('allocation');
for (let i=0; i<x; i+=1){}
console.timeEnd('allocation');
}
const increaseTest = (x) => {
console.time('increase');
for (let i=0; i<x; i++){}
console.timeEnd('increase');
}
실행시간을 비교할 수 있는 함수를 작성하여 테스트를 해보았다.
위의 사진에서 볼 수 있는 것처럼 오차를 확인하기 위해 반복하는 횟수를 늘려보고 여러 번 반복실행을 해보았으나 때에 따라 상황이 다르게 나타나는 것을 확인할 수가 있다. 여기서 유추해볼 수 있는 점은 두 경우의 속도 차이는 없다고 보는 것이 맞는 것 같다. 차이가 있다면 천억번 이상의 반복에서의 성능차이라고 보이는 상황이다.