실행하지 않는 JavaScript를 10MiB까지 늘려봤다
호출하지 않는 함수가 10MiB 들어 있으면 얼마나 손해일까. 바이트가 만든 비용과 코드 형태가 만든 비용을 갈라 855회 측정했다. 미호출 선언은 MiB당 약 21ms로 CPU를 4배 늦춰도 늘지 않았고, 파일을 읽자마자 실행되는 초기화 코드는 MiB당 201ms를 메인 스레드에 얹었다. 실제 라이브러리에서는 import만 해도 모듈 평가가 실행됐다.
호출하지 않는 함수가 10MiB 들어 있으면 얼마나 손해일까. 바이트가 만든 비용과 코드 형태가 만든 비용을 갈라 855회 측정했다. 미호출 선언은 MiB당 약 21ms로 CPU를 4배 늦춰도 늘지 않았고, 파일을 읽자마자 실행되는 초기화 코드는 MiB당 201ms를 메인 스레드에 얹었다. 실제 라이브러리에서는 import만 해도 모듈 평가가 실행됐다.
Next.js 16 turbopack 프로덕션 빌드에서 모듈 스코프 싱글톤이 런타임에 두 개가 됐다. 같은 동기 구간에서 조건 판정이 뒤집히고, 응답이 도착해도 타임아웃이 나는 증상을 번들 산출물로 추적한 기록. scope hoisting의 부분 병합, 순환 import, 이미 고쳐져 있던 upstream 버그, 그리고 뒤늦게 돌린 단일 변수 실험까지.
집필 중인 Node.js Deep Dive의 5.2장(vm 모듈의 함정) 일부를 미리 공개합니다.
수백 개의 요소를 효율적으로 관찰하면서 메모리 누수도 방지하는 방법
JSON.parse()가 버거워할 때 살아남는 법
Map 도 씁시다
2부는 어디갔냐구요? 내맘입니다.
const module = require("./module.js")
V8로는 아니더라도 내부 동작 직접 구현해보기
스냅샷 해석과 디버깅의 책임은 본인에게 있습니다
V8 내부 코드를 자유롭게 읽을 수 있는 그날까지
그 옛날 이상한 코드를 반성하며
해봤지만 해보지 않았습니다
나는야 자바스크립트 키보드 워리어
이걸 유사 배열이?
아직도 정규식이랑 안 친함. 오늘부터 1일....
memo, useMemo, useCallback, 그리고...
Math.random()도 잘못 사용하는 경우가 더러 있음
이벤트 루프는 4개의 큐, 그리고 2개의 중간 큐가 있습니다.
async가 있으면 함수 실행이 뒤로 넘어간다니까요?