जब मिलीसेकंड में ज़रूरत न हो - Performance.now

हाई रिज़ॉल्यूशन टाइमर को WebPerf वर्किंग ग्रुप ने जोड़ा है, ताकि वेब प्लैटफ़ॉर्म में मेज़रमेंट की अनुमति दी जा सके. यह टाइमर, +new Date और इसके बाद के Date.now() के मुकाबले ज़्यादा सटीक है.

इसलिए, तुलना करने के लिए, यहां उन वैल्यू के बारे में बताया गया है जो आपको वापस मिल सकती हैं:

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

आपको दिखेगा कि ऊपर दी गई दो वैल्यू, बहुत ज़्यादा तीव्रता के कई ऑर्डर हैं. किसी पेज के लोड होना शुरू होने के बाद से, performance.now() फ़्लोटिंग पॉइंट मिलीसेकंड का मेज़रमेंट होता है. यह performance.timing.[navigationStart](https://www.w3.org/TR/navigation-timing/#dom-performancetiming-navigationstart) टाइमस्टैंप की खास जानकारी होती है. आपके पास तर्क देना होगा कि unix epoch के बाद से मिलीसेकंड की संख्या हो सकती है. हालांकि, ऐसा बहुत कम होता है कि किसी वेब ऐप्लिकेशन को अब से 1970 के बीच की दूरी जानने की ज़रूरत हो. यह संख्या पेज से जुड़ी इसलिए बनी रहती है, क्योंकि दो या उससे ज़्यादा मेज़रमेंट की तुलना एक-दूसरे से की जाएगी.

मोनोटोनिक टाइम

इसका एक और फ़ायदा यह भी है कि जब आप किसी की भावनाओं को समझें, तो इस बात पर भरोसा करें. चलिए, WebKit के इंजीनियर टोनी जेनटिलकोर को इसके बारे में बताते हैं:

इस्तेमाल के उदाहरण

यहां कुछ ऐसी स्थितियां दी गई हैं जिनमें आप बुनियादी टाइमस्टैंप पाने के बजाय, इस हाई रिज़ॉल्यूशन टाइमर का इस्तेमाल कर सकते हैं:

  • मानदंड
  • गेम या ऐनिमेशन रनलूप कोड
  • प्रिसिज़न के साथ फ़्रेमरेट का हिसाब लगाना
  • ऐनिमेशन या समय के हिसाब से अन्य क्रम में खास पॉइंट पर होने वाली क्यूइंग ऐक्शन या ऑडियो

उपलब्धता

फ़िलहाल, Chrome (स्टेबल) में हाई रिज़ॉल्यूशन टाइमर window.performance.webkitNow() के तौर पर उपलब्ध है. आम तौर पर, यह वैल्यू requestAnimationFrame कॉलबैक में पास की गई नई आर्ग्युमेंट वैल्यू के बराबर होती है. जल्द ही, WebKit अपने प्रीफ़िक्स को हटा देगा और यह performance.now() तक उपलब्ध होगा. Microsoft के जतिंदर मैन की अगुवाई में WebPerfWG ने बहुत जल्द ही अपनी सुविधाओं को Search Console में जोड़ने में काफ़ी कामयाबी हासिल की है.

खास जानकारी में, performance.now() है...

  • फ़्रैक्शनल में माइक्रोसेकंड के साथ डबल
  • UNIX epoch के बजाय, पेज के navigationStart के हिसाब से
  • सिस्टम का समय बदलने पर कोई गड़बड़ी नहीं होती
  • Chrome स्टेबल, Firefox 15+, और IE10 में उपलब्ध है.