- Công cụ benchmark siêu nhẹ dưới 10KB được phát triển để đo lường chính xác hiệu năng mã nguồn
- Hoạt động dựa trên Web API, hỗ trợ đo thời gian chính xác bằng
process.hrtime hoặc performance.now
- Có thể chạy trong nhiều môi trường runtime JavaScript khác nhau như Node.js, Deno, Bun
- Cung cấp tính năng phân tích dựa trên thống kê: hỗ trợ tính độ trễ (latency) và thông lượng (throughput) như trung bình, độ lệch chuẩn, biên độ sai số, phương sai, phân vị
- Chế độ chạy đồng thời (concurrency): có thể chạy song song theo đơn vị
task hoặc bench, với tùy chọn threshold để kiểm soát số lượng thực thi đồng thời tối đa
- Có thể mở rộng bằng kiến trúc dựa trên sự kiện: các lớp
Bench và Task kế thừa EventTarget, cho phép đăng ký listener cho các sự kiện như cycle, abort
- Tự động phát hiện hàm bất đồng bộ: kiểm tra
AsyncFunction hoặc việc trả về Promise để tự động bật chế độ async
- Trực quan hóa và chuyển đổi kết quả: phương thức
bench.table() chuyển đổi sang định dạng xuất console.table(), đồng thời có thể tùy biến định dạng đầu ra bằng hàm Converter do người dùng định nghĩa
- Khi bật
retainSamples, dữ liệu mẫu thô sẽ được giữ nguyên để phục vụ phân tích tùy chỉnh, trực quan hóa đồ thị, xuất kết quả và nhiều mục đích khác
- Có thể chọn trình cung cấp dấu thời gian (timestamp provider) có độ chính xác cao
- Mặc định là
performance.now()
- Hỗ trợ các tùy chọn tối ưu theo runtime như
hrtimeNow, bunNanoseconds, auto
- Có thể tự triển khai giao diện TimestampProvider
- Hỗ trợ điều khiển dừng bằng AbortSignal
- Có thể hủy thực thi (abort) cho toàn bộ benchmark hoặc từng task riêng lẻ
- Khi bị hủy sẽ phát sinh sự kiện
abort và thiết lập cờ trạng thái (task.result.aborted)
- Cấu trúc một gói duy nhất, không phụ thuộc thư viện bên ngoài, bảo đảm tốc độ khởi tạo và thực thi nhanh
- So với Benchmark.js, mitata, tatami-ng, Bema, thiết kế này nhỏ hơn, đơn giản hơn và thân thiện với Web API hơn
1 bình luận
Giờ thậm chí còn cần cả thứ này sao nhỉ. AI giờ viết script đo hiệu năng đúng theo thời điểm và bối cảnh cần thiết tốt quá rồi..