Что быстрее - System.currentTimeMillis() или Date().getTime()?
Ответы
Ответ 1
System.currentTimeMillis() чуть быстрее, чем Date().getTime():
long t = System.currentTimeMillis();
for (int i = 0; i < 1000000000; i++) {
System.currentTimeMillis();
}
System.out.println("Elapsed: " + (System.currentTimeMillis() - t));
t = System.currentTimeMillis();
for (int i = 0; i < 1000000000; i++) {
new Date().getTime();
}
System.out.println("Elapsed: " + (System.currentTimeMillis() - t));
Консоль:
Elapsed: 11623
Elapsed: 11713
А причина этого очень проста, если посмотреть на исходники, то видно, что в конструкторе Date вызывается System.currentTimeMillis() (об этом тут писали):
public Date() {
this(System.currentTimeMillis());
}
Ответ 2
Теоретически System.currentTimeMillis() будет быстрей за счёт того, что не создаетс
новый обьект new Date(), который все равно вызывает System.currentTimeMillis(), но разница будет ничтожна.
Ответ 3
System.currentTimeMillis() - быстрее, просто потому, что new Date() само вызывае
эту функцию. Можете посмотреть это в реализации для OpenJDK. Так же можете посмотреть похожий вопрос на SOen.
Комментариев нет:
Отправить комментарий