배열이 있다면, 마지막 요소를 반환하는 함수다.
let arr = [1,2,3];
arr.pop(); // 3
arr.pop(); // 2
arr.pop(); // 1
console.log(arr); // []
배열이 있다면, 첫 요소를 반환하는 함수다.
let arr = [1,2,3];
arr.shift(); // 1
arr.shift(); // 2
arr.shift(); // 3
console.log(arr); // []
위 두 함수는 일정 갯수 이하인 배열에서는 차이가 없이 빠르게 반환한다.
하지만, 1만 개 정도가 넘어가면 성능차이는 확실하게 난다.
let arr = Array.from({length: 100000}, (v) => 0);
var start = Date.now();
while(arr.length){
arr.shift()
}
var end = Date.now()
console.log(end-start) // 평균 475ms
let arr = Array.from({length: 100000}, (v) => 0);
var start = Date.now();
while(arr.length){
arr.pop()
}
var end = Date.now()
console.log(end-start) // 평균 1ms
10만 개만 되어도 눈에 띄게 차이가 난다.
100만 개도 시도해봤다.
pop은 4ms이 나오지만,
shift는 시간이 오래 걸리는지 결과가 나오지 않았다.
배열이 작다면 모두 상관이 없다.
하지만 확장성을 생각해야 하는 프로그래머라면,
이런 사소한 것도 왜 그렇게 되는지 확인을 해야겠다고 생각한다.
그래야 나중에 최적화하기에도 적합해질 수 있다고 생각한다.
shift가 pop보다 성능이 훨씬 우수하군요 !! 정말 특별한 경우가 아니라면 shift보단 pop을 사용하도록 노력해야겠습니다 ㅎㅎ 요즘 알고리즘 문제 풀이를 하면서 이런 시간 복잡도에 대해 관심을 많이 갖게 되는 것 같습니다!! 수고하셨습니다 😊😆