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

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

Để so sánh, sau đây là các loại giá trị mà bạn sẽ nhận được:

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

Bạn sẽ thấy hai giá trị trên khác nhau nhiều cấp độ. performance.now() là một phép đo mili giây dấu phẩy động kể từ khi trang cụ thể đó bắt đầu tải (cụ thể là dấu thời gian performance.timing.[navigationStart](https://www.w3.org/TR/navigation-timing/#dom-performancetiming-navigationstart)). Bạn có thể cho rằng đó có thể là số mili giây kể từ thời gian bắt đầu của Unix, nhưng hiếm khi ứng dụng web cần biết khoảng cách giữa thời điểm hiện tại và 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 số liệu đo lường với nhau.

Thời gian đơn điệu

Một lợi ích khác ở đây là bạn có thể dựa vào thời gian một cách đơn điệu. Hãy để kỹ sư WebKit Tony 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 nên sử dụng bộ hẹn 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ã vòng lặp chạy trò chơi hoặc ảnh động
  • tính toán tốc độ khung hình một cách chính xác
  • đưa ra tín hiệu cho các hành động hoặc âm thanh xảy ra tại các điểm cụ thể trong ảnh động hoặc trình tự dựa trên thời gian khác

Phạm vi cung cấp

Bộ hẹn giờ có độ phân giải cao hiện có trong Chrome (Ổn định) 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ẽ loại bỏ tiền tố và bạn có thể sử dụng tiền tố này thông qua performance.now(). Cụ thể, WebPerfWG do Jatinder Mann của Microsoft dẫn dắt đã rất thành công trong việc xoá tiền tố các tính năng của họ một cách nhanh chóng.

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

  • một số thực có phần triệu giây trong phần thập phân
  • tương ứng với navigationStart của trang thay vì thời gian bắt đầu của hệ thống UNIX
  • không bị lệch khi thời gian hệ thống thay đổi
  • có trong Chrome phiên bản ổn định, Firefox 15 trở lên và IE10.