Formatter Benchmark
commit: loading...JavaScript / TypeScript 포맷터(Prettier · Biome · bun fmt)의 실행 속도 및 Prettier 포맷 출력 일치율을 비교합니다.
환경 정보를 불러오는 중...
종합 결과 요약 (Benchmark Overview)
대용량 코퍼스(프로젝트 전체 ×40 복제본, 5,600개 파일 / 11.5 MB) 포맷 소요 시간 및 원본 파일(140개) 기준 Prettier 출력 일치율 요약입니다.
| 도구 (Tool) | 버전 | 런타임 / 엔진 | 포맷 시간 (mean) | 상대 속도 (Throughput) | Prettier 바이트 일치율 |
|---|---|---|---|---|---|
| 데이터를 불러오는 중... | |||||
코퍼스별 실행 시간 (Execution Time)
hyperfine --write 측정 기준 평균 실행 시간입니다. 바
길이가 짧을수록 빠르며, 상대 배수는 해당 코퍼스의 최고 속도
기준입니다.
Prettier 출력 일치율 검증 (Byte-for-Byte Parity)
프로젝트 원본 소스 파일(140개)을 각 도구로 포맷한 뒤, Prettier 포맷 결과와 파일 단위로 바이트 일치 여부를 대조한 결과입니다.
| 구분 / 언어군 | 검증 파일 수 | bun fmt 일치율 | Biome 일치율 |
|---|
측정 환경 및 기술적 분석
측정 방식 및 재현 (Methodology)
-
측정 도구:
hyperfine쓰기 모드(--write), 워밍업 1회. 매 반복마다--prepare를 통해 코퍼스를 초기 상태로 원복하며, 원복 시간은 측정에서 제외합니다. -
코퍼스 구성:
test_web_page저장소의 git 추적 소스(HTML, CSS, JS, JSX, TS, TSX, Vue, JSON).large코퍼스는 이를 40회 복제하여 대규모 프로젝트를 모사했습니다. -
Biome 옵션: 실험적 HTML 포맷터를 활성화하고,
Prettier와 규격을 맞추기 위해
indentStyle: space,selfCloseVoidElements: always등을 지정했습니다. -
재현 명령:
bun install && bun run bench실행 시 벤치마크가 재수행되고results.json이 업데이트됩니다.
성능 및 호환성 분석 (Engineering Notes)
- 병렬 처리 아키텍처: Prettier는 Node.js 단일 스레드로 동작하는 반면, Biome(Rust)과 bun fmt(Rust, v1.4.0+)는 네이티브 스레드 풀을 통해 모든 CPU 코어를 활용하므로 처리량에서 큰 격차가 발생합니다.
- 코퍼스 규모와 Throughput: 파일 수가 적은 원본 1벌(140개)에서는 프로세스 기동(Startup) 오버헤드 비중이 크지만, 대용량 코퍼스(5,600개)에서는 I/O 및 파서의 순수 Throughput이 드러납니다.
- bun fmt: main 브랜치 canary 빌드임에도 검증된 140개 파일 전원에 걸쳐 Prettier와 100% 바이트 일치를 기록했습니다.
- Biome: 전반적으로 높은 호환성(97.9%)을 보이나, HTML 및 Vue/TSX 일부 엣지 케이스에서 미세한 공백/줄바꿈 차이가 존재합니다.
전체 측정 데이터 테이블 (Raw Benchmark Data)
| 코퍼스 | 도구 | 평균 실행 시간 (Mean) | 표준 편차 (StdDev) | 최소 (Min) | 최대 (Max) | 상대 배수 |
|---|