var timeInMs = Date.now();
por MDN
vs.
var timeInMs = new Date(optional).getTime();
por MDN .
Existe alguma diferença entre os dois, além da sintaxe e a possibilidade de setar a Data (para não a atual) via opcional na segunda versão?
Date.now () é mais rápido - verifique o jsperf
Respostas:
Essas coisas são iguais ( edite semanticamente; o desempenho é um pouco melhor com
.now()
):No entanto, o valor de tempo de qualquer
Date
instância já criada é congelado no momento de sua construção (ou em qualquer hora / data em que tenha sido definido). Ou seja, se você fizer isso:e, em seguida, espere um pouco, uma chamada subsequente para
now.getTime()
informará a hora no ponto em que a variável foi definida.fonte
dateObj.setTime(Date.now())
) ou criar novos objetos de data toda vez que você fizer algo assíncrono que precise acessarDate
métodos (comodateObj.getMinutes()
)?Eles são efetivamente equivalentes, mas você deve usar
Date.now()
. É mais claro e cerca de duas vezes mais rápido.Editar: Fonte: http://jsperf.com/date-now-vs-new-date
fonte
Date(optional).getTime();
precisa alocar espaço para obter um novo objeto Date antes de obter a hora atual?Ao fazer isso,
(new Date()).getTime()
você está criando um novo objeto Date. Se você fizer isso repetidamente, será cerca de 2x mais lento do que Date.now ()O mesmo princípio deve ser aplicado para
Array.prototype.slice.call(arguments, 0)
vs[].slice.call(arguments, 0)
fonte
Sim, está correto; eles são efetivamente equivalentes ao usar a hora atual.
fonte
Às vezes, é preferível manter alguma variável de controle de tempo em um formato de objeto Date em vez de apenas alguns milissegundos, para ter acesso aos métodos de Date sem reinstanciar. Nesse caso, Date.now () ainda ganha sobre new Date () ou algo semelhante, embora apenas por cerca de 20% no meu Chrome e por uma pequena quantidade no IE.
Veja meu JSPERF em
vs.
http://jsperf.com/new-date-vs-settime
fonte