2015-06-12 4 views
20

Qual è la differenza tra performance.now() e Date.now()?performance.now() vs Date.now()

Devo considerare performance.now() in sostituzione di Date.now() poiché performace.now() è più coerente e indipendente?

+4

No! 'Date.now()' restituisce il numero di millisecondi trascorsi dal 1 gennaio 1970 00:00:00 UTC, 'performance.now()' restituisce il numero di millisecondi/microsecondi trascorsi da * un'epoca arbitraria *. Fondamentalmente, 'performance.now()' dovrebbe essere usato solo quando si vuole misurare la distanza relativa tra due punti temporali, non la loro posizione "assoluta" nel tempo. –

+2

Cosa dice @buttifulbuttefly, inoltre ... 'performance.now' offre un timing più preciso (precisione al millisecondo). – markE

+1

Infatti, più preciso * tempistica *, non più preciso * tempo *. – Amadan

risposta

13

Entrambi servono a scopi diversi.

performance.now() è relativo al caricamento della pagina e più preciso in ordine di grandezza. I casi d'uso includono il benchmarking e altri casi in cui è richiesto un tempo ad alta risoluzione, ad esempio media (giochi, audio, video, ecc.)

Si noti che lo standard performance.now() è disponibile solo nei nuovi browser (incluso IE10 +).

Date.now() è relativo all'epoca Unix (1970-01-01T00: 00: 00Z) e dipende dall'orologio di sistema. I casi d'uso includono la stessa vecchia manipolazione delle date sin dall'inizio di JavaScript.

Vedere When milliseconds are not enough: performance.now e now method (Internet Explorer) - MSDN per ulteriori informazioni.

Il W3C spec ufficiale può essere trovato qui: High Resolution Time API

+1

Questa precisione ha un costo. È più lento del 50%. Buono a sapersi se ne hai bisogno in un ciclo stretto. https://jsperf.com/perf-vs-date/1 – Eyal

+1

Oops, intendevo l'80% più lento. :-( – Eyal

+0

Tieni presente che cosa pensano i google audit su date.now() https://developers.google.com/web/tools/lighthouse/audits/date-now – StLia

4

Date.now() restituisce il numero di millisecondi trascorsi dal 1 gennaio 1970 00:00:00 UTC, performance.now() restituisce il numero di millisecondi, con microsecondi nella parte frazionaria, da performance.timing.navigationStart, l'inizio della navigazione del documento, alla chiamata performance.now(). Un'altra importante differenza tra Date.now() e performance.now() è che quest'ultima aumenta in modo monotono, quindi la differenza tra due chiamate non sarà mai negativa.

Per una migliore comprensione visitare il link.