- 코드 성능을 정밀하게 측정하기 위해 개발된 10KB 이하의 초경량 벤치마킹 도구
-
Web API 기반으로 동작하며,
process.hrtime 또는 performance.now를 활용한 정확한 타이밍 측정 지원
- Node.js, Deno, Bun 등 다양한 JavaScript 런타임 환경에서 실행 가능
-
통계 기반 분석 기능 제공 : 평균, 표준편차, 오차 한계, 분산, 백분위수 등 지연(latency) 및 처리량(throughput) 계산 지원
-
동시성(concurrency) 실행 모드 :
task 단위 또는 bench 단위로 병렬 실행 가능, threshold 옵션으로 최대 동시 실행 수 제어
-
이벤트 기반 구조로 확장 가능 :
Bench와 Task 클래스가 EventTarget을 상속하며, cycle, abort 등 이벤트 리스너 등록 가능
-
비동기 함수 자동 감지 :
AsyncFunction 또는 Promise 반환 여부를 검사해 자동으로 async 모드 설정
-
결과 시각화 및 변환 :
bench.table() 메서드로 console.table() 출력 포맷 변환하며, 사용자 정의 Converter 함수로 출력 형식 커스터마이징 가능
-
retainSamples 설정 시 원시 샘플 데이터를 그대로 유지하며, 커스텀 분석, 그래프 시각화, 결과 내보내기 등에 활용 가능
-
정밀한 타임스탬프 제공자(timestamp provider) 선택 가능
- 기본값은
performance.now()
-
hrtimeNow, bunNanoseconds, auto 등 런타임별 최적화 옵션 지원
- 사용자 정의 TimestampProvider 인터페이스 구현 가능
-
AbortSignal 기반 중단 제어 지원
- 벤치 전체 또는 개별 태스크 단위로 실행 중단(abort) 가능
- 중단 시
abort 이벤트 발생 및 상태 플래그(task.result.aborted) 설정
- 외부 라이브러리 의존성 없는 단일 패키지 구조로 빠른 초기화 및 실행 속도 보장
-
Benchmark.js, mitata, tatami-ng, Bema 대비 더 작고 단순하며 Web API 친화적인 설계가 특징