Yüksek Çözünürlüklü Zamanlayıcı, WebPerf Çalışma Grubu tarafından Web Platformu'nda +new Date
ve yeni Date.now()
ile yaptığımızdan daha hassas ölçümlere olanak tanımak için eklenmiştir.
Karşılaştırmak gerekirse, elde edeceğiniz değerler şunlardır:
Date.now() // 1337376068250
performance.now() // 20303.427000007
Yukarıdaki iki değerin büyüklük açısından birbirinden çok farklı olduğunu göreceksiniz. performance.now()
, söz konusu sayfanın yüklenmeye başlamasından bu yana geçen milisaniye cinsinden bir kayan nokta ölçümüdür (performance.timing.[navigationStart](https://www.w3.org/TR/navigation-timing/#dom-performancetiming-navigationstart)
zaman damgası spesifik olmalıdır). Bunun Unix dönemi'nden bu yana geçen milisaniyelik bir süre olduğunu iddia edebilirsiniz, ancak bir web uygulamasının bugün ile 1970 arasındaki mesafeyi bilmesi nadiren gerekir. İki veya daha fazla ölçümü birbiriyle karşılaştıracağınız için bu sayı sayfaya göre kalır.
Monoton zaman
Bunun bir diğer avantajı da zamanın monoton olmasıdır. WebKit mühendisi Tony Gentilcore'un bunu açıklamasına izin verelim:
Kullanım Alanları
Temel bir zaman damgası yerine bu yüksek çözünürlüklü zamanlayıcıyı kullanacağınız birkaç durum vardır:
- karşılaştırma
- oyun veya animasyon genel döngü kodu
- kare hızını hassas bir şekilde hesaplama
- bir animasyonun veya başka bir zamana dayalı dizinin belirli noktalarında meydana gelen işaretleme eylemleri veya sesleri
Kullanılabildiği yerler
Yüksek çözünürlüklü zamanlayıcı şu anda Chrome'da (Kararlı) window.performance.webkitNow()
olarak kullanılabilmektedir ve bu değer genellikle requestAnimationFrame geri çağırma işlevine iletilen yeni bağımsız değişken değerine eşittir. Çok yakında WebKit ön ekini kaldıracak ve bu özellik performance.now()
tarihine kadar kullanılabilir olacak. Özellikle Microsoft'tan Jatinder Mann önderliğindeki WebPerfWG, özelliklerinin çok hızlı bir şekilde öne çıkmasını sağlayarak çok başarılı oldu.
Özetle performance.now()
...
- mikrosaniye ile bir çift
- UNIX dönemine değil, sayfanın
navigationStart
özelliğine göre - sistem saati değiştiğinde sapma olmaz
- Chrome'un kararlı, Firefox 15 ve sonraki sürümleri ile IE10'da kullanılabilir.