Страницы

Поиск по вопросам

понедельник, 25 ноября 2019 г.

Что быстрее - System.currentTimeMillis() или Date().getTime()?


Что быстрее -  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.

Комментариев нет:

Отправить комментарий