우연히 예전 기술블로그를 보다가,
javascript의 for문과 map,forEach가 데이터 처리 속도가 다르다는것을 알게되었다.
map, forEach가 유지보수, 그리고 개발자가 가독성이 좋게 보여서
계속 사용중인데, 네이티브 for가 약 1.5–3배 빠르다고하는것이 조금의 충격이다.
하지만 V8등의 현대의 엔진에서는 엔진내부에서 최적화를 해주어서,
너무 정말 큰차이는 많이 나지않는다고한다.
10,000건 이상: native for
10,000건 이하: map, foreach
를 사용하는것이 추천해주는 갯수라는데,
먼저 지피티는 차이가 나는 이유에 대해서 아래와 같이 설명한다.
| 방식 | 동작 | 오버헤드 |
|---|---|---|
forEach | 내부적으로 콜백 함수를 매 요소마다 호출 | 콜스택 진입·탈출, 클로저(콜백) 컨텍스트 생성 비용 발생 |
for | 한 번에 루프 컨트롤만 수행 → 인덱스 연산을 통해 배열 요소 직접 접근 | 함수 호출이 없으므로 순수 인덱스 접근(arr[i])만 이뤄짐 |
왠만한 개발을 할때에는 가독성을 위해서 map을 사용해도 되겠다.
거의 차이가 안난다고하니깐
참고 : https://techblog.woowahan.com/2547/