증상
apps/editor-poc에서 본문을 편집할 때, 입력한 글자가 화면에 반영되는 속도가 너무 느려서 실사용이 어렵습니다. 타이핑이 화면을 따라오지 못합니다.
관련 증상(동일 근원으로 추정): 링크가 포함된 다소 긴 HTML을 붙여넣으면 페이지가 잠시 멈춥니다(#관련).
환경
apps/editor-poc — typie의 Svelte 뷰 레이어(View/Page/Input + editor.svelte.ts)를 그대로 재사용하는 구성.
vite dev(개발 서버)로 실행 중. 프로덕션 빌드에서의 측정은 아직 안 함.
추정 원인 (가설, 미확정)
typie 에디터의 브라우저 렌더러는 CPU 기반입니다 — upstream/typie/crates/editor-ffi/src/platform/wasm_browser.rs의 RenderBackend::new_cpu가 페이지를 CPU로 래스터화한 뒤 캔버스 2D 컨텍스트에 putImageData로 그립니다(WebGL/WebGPU 아님). 그리고 WASM이 워커가 아닌 메인 스레드에서 동기로 돕니다.
따라서 키 입력마다 입력 → WASM 처리 → 레이아웃 → 전체(또는 큰 영역) CPU 래스터 → putImageData가 메인 스레드에서 동기로 일어나며, 이게 입력 지연의 원인으로 보입니다. dev 빌드(비최적화 + HMR 오버헤드)가 이를 더 악화시킬 수 있습니다. 붙여넣기 멈춤도 같은 경로(HTML 파싱+노드 삽입+재렌더가 동기)입니다.
확인/개선 방향
- 프로덕션 빌드 측정:
vite build + preview에서도 동일하게 느린지 확인해 dev 오버헤드를 분리.
- 렌더 비용 프로파일: 키당 재래스터/재present 범위를 측정. damage-only 렌더, RAF 프레임 합치기(coalescing), 보이는 페이지만 렌더 등으로 축소 가능한지.
- 메인 스레드 블로킹 해소: WASM 렌더를 Web Worker + OffscreenCanvas로 옮길 수 있는지(typie 본가 구조 변경 필요할 수 있음).
- 본가 대조: typie 공식 서비스에서도 같은 지연이 있는지 확인 — 본질적 특성인지 우리 구성(빌드/뷰포트/스케일) 문제인지 구분.
- 렌더 입력값 점검:
scale_factor(devicePixelRatio), 캔버스 백킹 크기, 페이지 수가 래스터 비용에 미치는 영향.
참고
- 직접 마운트가 아니라 typie 뷰 레이어 재사용 구성입니다(관련 설계:
docs/ARCHITECTURE.md).
- "fork 안 함" 원칙상 typie WASM 자체 수정은 마지막 수단.
🤖 Generated with Claude Code
증상
apps/editor-poc에서 본문을 편집할 때, 입력한 글자가 화면에 반영되는 속도가 너무 느려서 실사용이 어렵습니다. 타이핑이 화면을 따라오지 못합니다.관련 증상(동일 근원으로 추정): 링크가 포함된 다소 긴 HTML을 붙여넣으면 페이지가 잠시 멈춥니다(#관련).
환경
apps/editor-poc— typie의 Svelte 뷰 레이어(View/Page/Input+editor.svelte.ts)를 그대로 재사용하는 구성.vite dev(개발 서버)로 실행 중. 프로덕션 빌드에서의 측정은 아직 안 함.추정 원인 (가설, 미확정)
typie 에디터의 브라우저 렌더러는 CPU 기반입니다 —
upstream/typie/crates/editor-ffi/src/platform/wasm_browser.rs의RenderBackend::new_cpu가 페이지를 CPU로 래스터화한 뒤 캔버스 2D 컨텍스트에putImageData로 그립니다(WebGL/WebGPU 아님). 그리고 WASM이 워커가 아닌 메인 스레드에서 동기로 돕니다.따라서 키 입력마다
입력 → WASM 처리 → 레이아웃 → 전체(또는 큰 영역) CPU 래스터 → putImageData가 메인 스레드에서 동기로 일어나며, 이게 입력 지연의 원인으로 보입니다. dev 빌드(비최적화 + HMR 오버헤드)가 이를 더 악화시킬 수 있습니다. 붙여넣기 멈춤도 같은 경로(HTML 파싱+노드 삽입+재렌더가 동기)입니다.확인/개선 방향
vite build+preview에서도 동일하게 느린지 확인해 dev 오버헤드를 분리.scale_factor(devicePixelRatio), 캔버스 백킹 크기, 페이지 수가 래스터 비용에 미치는 영향.참고
docs/ARCHITECTURE.md).🤖 Generated with Claude Code