WebAssembly 플레이그라운드
브라우저에서 로컬로 실행숫자 타입(i32, i64, f32, f64)마다 export가 하나씩 있으며 add(20, 22)부터 시작합니다.
WAT 편집기
고급 설정
허용 범위: 1,000–60,000
허용 범위: 1–10,000,000
허용 범위: 100–30,000
- WebAssembly란?
- 브라우저가 JavaScript와 함께 네이티브에 가까운 속도로 실행하는 간결한 바이너리 형식입니다. 모듈은 호출할 수 있는 함수를 export합니다.
- WAT란?
- WebAssembly 텍스트 형식으로, 모듈을 읽기 쉽게 표현한 것입니다. 각 명령어는 바이너리에 그대로 대응합니다.
- 컴파일을 누르면 어떻게 되나요?
- WABT가 이 브라우저에서 WAT를 .wasm 바이너리로 변환합니다. 모듈을 검증하고 검사한 뒤 export 함수를 격리된 Worker에서 실행할 수 있습니다.
- 코드가 브라우저 밖으로 전송되나요?
- 아니요. 컴파일, 검사, 실행은 모두 로컬에서 이루어집니다. 처음 컴파일할 때 WAT 컴파일러만 다운로드됩니다.
WASM 검사, 실행, 프로파일링
.wasm 모듈을 업로드하거나 WAT를 작성하거나 예제를 불러오세요. 먼저 모듈을 검증하고 검사하여 imports, exports, 시그니처가 포함된 함수, 메모리(페이지), 테이블, 전역 변수, 사용자 정의 섹션을 보여 줍니다. 그다음 지원되는 export를 타입이 지정된 인수로 실행하고, 벤치마크하고, 중지하고, 다시 인스턴스화할 수 있습니다.
숫자 ABI와 엄격한 import
러너는 매개변수가 i32, i64, f32, f64이고 결과가 최대 하나인 export만 호출합니다. i64 값은 처음부터 끝까지 BigInt로 다루므로 큰 정수도 정확합니다. 문자열, 포인터, 참조, SIMD, WASI, 다중 반환 값은 검사기에 표시되지만 실행되지 않습니다. import는 암묵적으로 제공되지 않으며, 0을 반환하는 숫자 스텁, 0으로 시작하는 전역 변수, 새 메모리와 테이블을 직접 선택합니다. 해결되지 않은 import가 있으면 인스턴스화가 차단되고 이름이 표시됩니다.
정직하게 측정한 벤치마크와 메모리
실행과 벤치마크는 반복 한도, 시간 한도, 타임아웃이 있는 전용 Worker에서 동작합니다. 중지는 Worker를 종료하고 인스턴스 재설정은 깨끗한 상태에서 다시 시작합니다. 결과에는 인스턴스화 시간, 실행 시간, 평균, 중앙값, nearest-rank P95, 초당 연산 수가 표시됩니다. 매우 빠른 호출은 타이머 해상도보다 길어지도록 배치로 측정합니다. 선형 메모리는 64 KiB 페이지 단위로 초기, 현재, 관측 최대 크기와 증가 이벤트를 보여 줍니다.
CPU %, GC 횟수, FPS가 없는 이유
브라우저는 작업별 CPU 사용률이나 가비지 컬렉션 횟수를 제공하지 않으며 함수 호출은 프레임을 그리지 않습니다. 그래서 값을 지어내지 않고 측정 안 됨 또는 해당 없음으로 표시합니다. 페이지 JS 힙과 긴 작업 데이터는 지원하는 브라우저에서만 표시됩니다. 오래 걸리는 호출, 경계 오버헤드, 반복적인 메모리 증가, 해결되지 않은 import 같은 진단에는 항상 근거가 된 측정값이 함께 표시됩니다.
개인정보 보호와 제한
모듈, WAT 소스, 인수, 결과는 이 브라우저 안에만 남으며 업로드되지 않고 분석 도구에도 모듈 내용이 전달되지 않습니다. 업로드는 10 MiB 이하의 core 모듈 하나, WAT는 100만 자까지입니다. WAT 컴파일러(WABT)는 WAT를 컴파일할 때만 다운로드됩니다. 측정값은 브라우저, 기기, JIT 단계에 따라 달라지므로 같은 기기에서 비교하세요.
