Почему System.currentTimeMillis () работает медленно в Linux? - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу рассчитать время отклика для каждого метода. Это можно сделать с помощью System.currentTimeInMillis, но я слышал, что это медленно в Linux.

1 Ответ

0 голосов
/ 11 февраля 2019

java.time.Instant.now()

Это можно сделать с помощью System.currentTimeInMillis

Этот метод System.getCurrentTimeInMillis заменяется Instant.now().

В большинстве реализаций Java 9 и более поздних версий вы обнаружите, что Instant фиксирует текущий момент с более высоким разрешением в микросекундах, для шести цифр десятичной дроби по сравнению с тремя.Чтобы было ясно, Instant может представлять момент с еще более высоким разрешением, наносекунды, но захватывает текущий момент с помощью микро.Сегодняшнее традиционное оборудование не может точно отслеживать время с разрешением в нанос.

System.nanoTime()

Я хочу рассчитать время отклика каждого метода.

Для микро-бенчмаркинга используйте System.nanoTime.Этот метод отслеживает бесконечный цикл прохождения наносекунд, но не имеет отношения к текущей дате и времени .

Имейте в виду, что микротестирование сложно.Результаты, скорее всего, будут ненадежными при исполнении новичками.

Для серьезного микро-бенчмаркинга рассмотрите возможность использования фреймворка JMH .

Избегайте System.currentTimeInMillis

… System.currentTimeInMillis, но я слышал, что это медленно на Linux.

Я понятия не имею, что могло вызватьэто утверждение.Я подозреваю, что вы неправильно поняли.

Во всяком случае, вопрос спорный.Больше никому не нужно снова звонить System.currentTimeInMillis в современной Java.

...