Tinybench - 경량 자바스크립트 벤치마킹 라이브러리
(github.com/tinylibs)- 코드 성능을 정밀하게 측정하기 위해 개발된 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 친화적인 설계가 특징