자바스크립트 2

[You don't know JS] Part3 - 6장. 벤치마킹과 튜닝

a++와 ++a 사이에 어떤것이 성능이 좋을것인가? 학부생때도 뭐가 더 좋은지 많이 고민해보았고, 써져있는 글마다 달랐다. 결론적으로 의미가 없다는걸 알게되었다. 저 둘이 성능차이가 있으면 얼마나 있을꺼고, 내 서비스에 얼마나 큰 영향을 줄수 있을까... 책에서도 그러한 미시적 성능 튜닝에 초점을 두고있진 않았다. 6.1 벤치마킹 일반적으로 많이 사용하는 성능 측정 코드이다. var start = (new Date()).getTime(); // TODO: 테스트할 작업 var end = (new Date()).getTime(); console.log(end - start); 위와같은 방법으론 정확한 성능을 알아낼 수 없다. 문제점은 다음과 같다. getTime의 최소값인 밀리세컨 이하의 값은 측정 불가 ..

개발/Javascript 2020.10.11

[You don't know JS] Part4 - 5장. 프로그램 성능

비동기 패턴 덕분에 성능 좋은 코드를 작성할 수 있었다. 하지만 근본적으로 단일 이벤트 루프 스레드에 묶여있기 때문에 한계가 있다. 이러한 문제를 극복하기 위한 3가지를 알아보았다. 1. 웹 워커 비동기 이벤트를 이용하여 스레드간에 메시지를 교환하며 자바스크립트 파일을 개별 스레드 단위로 실행하게 해준다. 메인 UI 스레드의 응답성을 높이면서도 소요 시간이 길거나 자원을 집중적으로 소모하는 작업을 다른 스레드로 분산하는 장점을 가진다. 2. SIMD CPU 수준의 병렬 수학 연산을 대량 데이터의 수치 연산 같은 고성능 병렬 데이터 연산에 특화된 JS API로 연결하는 기법이다. 3. asm.js GC나 강제변환 등 최적화 하기 어려운 영역을 피해서 자바스크립트 엔진이 이런 부류의 코드를 자동으로 인식하여..

개발/Javascript 2020.10.11