138 votes

Performance - Date.now() vs Date.getTime()

var timeInMs = Date.now();

par MDN

vs.

var timeInMs = new Date(optional).getTime();

par MDN .

Y a-t-il une différence entre les deux, en dehors de la syntaxe et de la possibilité de définir la date (autre que la date actuelle) de manière facultative dans la deuxième version ?

Date.now() est plus rapide - consultez la page jsperf

123voto

Pointy Points 172438

Ces choses sont les mêmes ( modifier sémantiquement ; les performances sont un peu meilleures avec .now() ) :

var t1 = Date.now();
var t2 = new Date().getTime();

Cependant, la valeur temporelle de toute opération déjà créée Date est gelée au moment de sa construction (ou à n'importe quelle heure/date à laquelle elle a été définie). C'est-à-dire, si vous faites ceci :

var now = new Date();

et attendre un moment, un appel ultérieur à now.getTime() indiquera l'heure au moment où la variable a été définie.

66voto

jrajav Points 2789

Ils sont effectivement équivalents, mais vous devriez utiliser Date.now() . C'est plus clair et environ deux fois plus rapide.

Edit : Source : http://jsperf.com/date-now-vs-new-date

5voto

Gregory Magarshak Points 448

Quand vous le faites (new Date()).getTime() vous créez un nouvel objet Date. Si vous effectuez cette opération de manière répétée, elle sera environ deux fois plus lente que Date.now().

Le même principe devrait s'appliquer pour Array.prototype.slice.call(arguments, 0) vs [].slice.call(arguments, 0)

3voto

Brett Zamir Points 5355

Oui, c'est exact ; ils sont effectivement équivalents lorsqu'on utilise l'heure actuelle.

2voto

SashaK Points 29

Il est parfois préférable de conserver une variable de suivi du temps dans un format d'objet Date plutôt que sous la forme d'un simple nombre de millisecondes, afin d'avoir accès aux méthodes de Date sans avoir à les réinstancier. Dans ce cas, Date.now() l'emporte toujours sur new Date() ou autre, mais seulement d'environ 20% sur mon Chrome et d'un tout petit peu sur IE.

Voir mon JSPERF sur

timeStamp2.setTime(Date.now()); // set to current;

vs.

timeStamp1 = new Date(); // set to current;

http://jsperf.com/new-date-vs-settime

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X