WebAssembly를 계산 경계에만 적용하기
WebAssembly는 JavaScript 대체재가 아니라 CPU 집약 로직을 브라우저 안의 별도 계산 경계로 옮기는 도구다.
| 판단 축 | Wasm에 맡길 때 | JS에 남길 때 | 검증 질문 |
|---|---|---|---|
| Workload | 압축, 암호화, 이미지 처리처럼 반복 계산이 큼 | 이벤트와 DOM 조작이 중심 | CPU 시간이 실제 병목인가 |
| Boundary | 큰 입력을 한 번에 넘기고 결과만 받음 | 작은 값을 자주 왕복 | 호출 횟수가 이득을 지우지 않는가 |
| Memory | TypedArray와 linear memory 공유 설계 가능 | 문자열·객체 변환이 잦음 | 복사 비용을 측정했는가 |
| Loading | wasm 로드 비용을 캐시와 streaming으로 줄임 | 초기 화면이 더 중요함 | 첫 실행 지연을 감당하는가 |
| Benchmark | 같은 입력으로 JS와 Wasm을 비교 | 감으로만 성능 기대 | 도입 전후 수치를 남겼는가 |
Wasm의 기준은 “빠를 것 같다”가 아니라 계산량이 JS-Wasm 경계 비용보다 충분히 큰가이다.