Khi mili giây là không đủ – Performance.now

Nhóm hoạt động WebPerf đã thêm Bộ hẹn giờ độ phân giải cao để cho phép đo lường trong Nền tảng web một cách chính xác hơn những gì chúng tôi từng có bằng +new DateDate.now() mới hơn.

Vì vậy, để so sánh, sau đây là các loại giá trị bạn sẽ nhận lại:

Date.now()         //  1337376068250
performance.now()  //  20303.427000007

Bạn sẽ thấy hai giá trị ở trên có nhiều thứ tự khác nhau về độ lớn. performance.now() là số đo mili giây dấu phẩy động kể từ khi trang cụ thể đó bắt đầu tải (cụ thể là timeStamp performance.timing.[navigationStart](https://www.w3.org/TR/navigation-timing/#dom-performancetiming-navigationstart)). Bạn có thể lập luận rằng có thể là số mili giây kể từ thời gian bắt đầu của hệ thống Unix, nhưng hiếm khi ứng dụng web cần biết khoảng cách từ thời điểm hiện tại đến năm 1970. Con số này vẫn tương ứng với trang vì bạn sẽ so sánh hai hoặc nhiều phép đo với nhau.

Thời gian đơn sắc

Một lợi ích khác ở đây là bạn có thể sử dụng thời gian để video có nội dung đơn điệu. Hãy cùng để kỹ sư WebKit,To cử tri Gentilcore giải thích về vấn đề này:

Trường hợp Sử dụng

Có một vài trường hợp bạn sẽ sử dụng bộ tính giờ có độ phân giải cao này thay vì lấy dấu thời gian cơ bản:

  • đo điểm chuẩn
  • mã runloop trò chơi hoặc ảnh động
  • tính toán tốc độ khung hình với độ chính xác
  • hành động gợi ý hoặc âm thanh xuất hiện tại các điểm cụ thể trong một ảnh động hoặc trình tự dựa trên thời gian khác

Phạm vi cung cấp

Bộ tính giờ có độ phân giải cao hiện có trong Chrome (Chính thức) dưới dạng window.performance.webkitNow() và giá trị này thường bằng giá trị đối số mới được truyền vào lệnh gọi lại requestAnimationFrame. Sắp tới, WebKit sẽ bỏ tiền tố và tính năng này sẽ được hỗ trợ trên performance.now(). Đặc biệt, WebPerfWG, do Jatinder Mann của Microsoft dẫn dắt, đã rất thành công trong việc huỷ thêm tiền tố cho các tính năng của mình khá nhanh chóng.

Tóm lại, performance.now() là...

  • gấp đôi với micrô giây ở dạng phân số
  • tương ứng với navigationStart của trang thay vì so với thời gian UNIX
  • không bị lệch khi thời gian hệ thống thay đổi
  • có trong phiên bản Chrome ổn định, Firefox 15 trở lên và IE10.