Le Minuteur haute résolution a été ajouté par le groupe de travail WebPerf pour permettre des mesures dans la plate-forme Web plus précises que celles obtenues avec +new Date
et le plus récent Date.now()
.
À titre de comparaison, voici les types de valeurs que vous obtiendrez:
Date.now() // 1337376068250
performance.now() // 20303.427000007
Vous remarquerez que les deux valeurs ci-dessus sont très différentes. performance.now()
correspond à une mesure en millisecondes à virgule flottante depuis le début du chargement de cette page spécifique (l'horodatage performance.timing.[navigationStart](https://www.w3.org/TR/navigation-timing/#dom-performancetiming-navigationstart)
, plus précisément). On pourrait affirmer qu'il s'agit du nombre de millisecondes écoulées depuis l'époque Unix, mais une application Web a rarement besoin de connaître la distance entre le moment présent et 1970. Ce nombre reste relatif à la page, car vous allez comparer deux mesures ou plus entre elles.
Temps monotone
Autre avantage : vous pouvez compter sur la monotonie du temps. Laissez-moi vous expliquer cela par l'ingénieur WebKit Tony Gentilcore:
Cas d'utilisation
Vous pouvez utiliser ce minuteur haute résolution au lieu d'obtenir un code temporel de base dans les cas suivants:
- analyse comparative
- Code de boucle d'exécution de jeu ou d'animation
- calculer le frame rate avec précision ;
- déclencher des actions ou des éléments audio à des moments spécifiques d'une animation ou d'une autre séquence temporelle ;
Disponibilité
Le minuteur haute résolution est actuellement disponible dans Chrome (version stable) sous la forme window.performance.webkitNow()
. Cette valeur est généralement égale à la nouvelle valeur d'argument transmise au rappel requestAnimationFrame. WebKit va bientôt supprimer son préfixe, et il sera disponible via performance.now()
. Le groupe WebPerfWG, dirigé par Jatinder Mann de Microsoft, a réussi à supprimer le préfixe de ses fonctionnalités très rapidement.
En résumé, performance.now()
est…
- un double avec des microsecondes dans la partie fractionnaire
- par rapport au
navigationStart
de la page plutôt qu'à l'epoch UNIX. - ne sont pas faussées lorsque l'heure système change
- disponible dans Chrome stable, Firefox 15 et versions ultérieures, et IE 10.