Milisaniye cinsinden yeterli olmadığında - Performance.now

Yüksek Çözünürlüklü Zamanlayıcı, WebPerf Çalışma Grubu tarafından Web Platformu'nda +new Date ve daha yeni Date.now() ile sahip olduğumuzdan daha hassas ölçümlere olanak tanımak için eklenmiştir.

Karşılaştırma amacıyla, alacağınız değer türlerini aşağıda bulabilirsiniz:

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

Yukarıdaki iki değerin çok farklı olduğunu fark edeceksiniz. performance.now(), söz konusu sayfanın yüklenmeye başladığı andan itibaren geçen milisaniyelerin kayan noktalı ölçümüdür (daha açık belirtmek gerekirse performance.timing.[navigationStart](https://www.w3.org/TR/navigation-timing/#dom-performancetiming-navigationstart) zaman damgası). Bu değerin Unix epoch'undan bu yana geçen milisaniye sayısı olabileceğini iddia edebilirsiniz, ancak bir web uygulamasının şu an ile 1970 arasındaki mesafeyi bilmesi nadiren gerekir. İki veya daha fazla ölçümü birbirine kıyaslayacağınız için bu sayı sayfaya göre değişir.

Monotonik zaman

Buradaki bir diğer avantaj da zamanın monoton olmasına güvenebilmenizdir. Bu konuyu WebKit mühendisi Tony Gentilcore'a bırakalım:

Kullanım Alanları

Temel bir zaman damgası almak yerine bu yüksek çözünürlüklü zamanlayıcıyı kullanabileceğiniz birkaç durum vardır:

  • karşılaştırma
  • oyun veya animasyon runloop kodu
  • kare hızını hassas bir şekilde hesaplama
  • Animasyon veya zamana dayalı başka bir sekansın belirli noktalarında işlemler ya da seslerin çalınmasını sağlama

Kullanılabilirlik

Yüksek çözünürlüklü zamanlayıcı şu anda Chrome'da (Kararlı) window.performance.webkitNow() olarak kullanılabilir ve bu değer genellikle requestAnimationFrame geri çağırma işlevine iletilen yeni bağımsız değişken değerine eşittir. WebKit yakında ön ekini kaldıracak ve bu özellik performance.now() üzerinden kullanılabilecek. Özellikle Microsoft'tan Jatinder Mann liderliğindeki WebPerfWG, özelliklerinin ön eklerini oldukça hızlı bir şekilde kaldırmada başarılı oldu.

Özet olarak performance.now():

  • kesirli kısımda mikrosaniye içeren bir çift
  • UNIX sıfır zamanı yerine sayfanın navigationStart değerine göre
  • Sistem saati değiştiğinde bozulmaz.
  • Chrome kararlı sürümünde, Firefox 15 ve sonraki sürümlerde ve IE10'da kullanılabilir.