Jika milidetik tidak cukup - performance.now

Pengatur Waktu Resolusi Tinggi ditambahkan oleh WebPerf Working Group untuk memungkinkan pengukuran di Platform Web yang lebih tepat daripada yang kami miliki dengan +new Date dan Date.now() yang lebih baru.

Jadi hanya sebagai perbandingan, berikut ini nilai-nilai yang akan Anda dapatkan:

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

Anda akan melihat dua nilai di atas memiliki banyak urutan magnitudo yang berbeda. performance.now() adalah ukuran floating point milidetik sejak halaman tersebut mulai dimuat (timeStamp performance.timing.[navigationStart](https://www.w3.org/TR/navigation-timing/#dom-performancetiming-navigationstart) menjadi spesifik). Anda dapat berpendapat bahwa nilai tersebut bisa saja berupa jumlah milidetik sejak epoch unix, tetapi aplikasi web jarang perlu mengetahui jarak antara sekarang dan tahun 1970. Angka ini tetap relatif dengan halaman karena Anda akan membandingkan dua atau beberapa pengukuran.

Waktu monoton

Manfaat tambahan lainnya di sini adalah Anda dapat mengandalkan waktu yang monoton. Mari kita biarkan insinyur WebKit, Tony Gentilcore, menjelaskan hal ini:

Kasus Penggunaan

Ada beberapa situasi yang menyebabkan Anda akan menggunakan timer resolusi tinggi ini, bukan mengambil stempel waktu dasar:

  • pembandingan
  • kode runloop game atau animasi
  • menghitung kecepatan frame dengan presisi
  • tindakan sinyal atau audio terjadi di titik tertentu dalam animasi atau urutan berbasis waktu lainnya

Ketersediaan

Timer resolusi tinggi saat ini tersedia di Chrome (Stabil) sebagai window.performance.webkitNow(), dan nilai ini umumnya sama dengan nilai argumen baru yang diteruskan ke callback requestAnimationFrame. Dalam waktu dekat, WebKit akan menghapus awalannya dan ini akan tersedia hingga performance.now(). Secara khusus, WebPerfWG, yang dipimpin oleh Jatinder Mann dari Microsoft, sangat berhasil menghapus awalan fitur mereka dengan cukup cepat.

Singkatnya, performance.now() adalah...

  • double dengan mikrodetik dalam pecahan
  • relatif terhadap navigationStart halaman, bukan dengan epoch UNIX
  • tidak terdistorsi ketika waktu sistem berubah
  • tersedia di Chrome stabil, Firefox 15+, dan IE10.