Как измерить время выполнения операции в Java

«Как измерить время выполнения операции в Java» — вопрос из категории Софт-скиллы, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

В Java для измерения времени выполнения кода используются несколько подходов в зависимости от требуемой точности.

1. Для простых измерений (миллисекунды): Используйте System.currentTimeMillis(). Подходит для оценки длительных операций.

long startTime = System.currentTimeMillis();
// Выполняемый код
performOperation();
long elapsedTime = System.currentTimeMillis() - startTime;
System.out.println("Время выполнения: " + elapsedTime + " мс");

2. Для высокоточных измерений (наносекунды): Используйте System.nanoTime(). Важно измерять интервалы на одной и той же JVM.

long startNano = System.nanoTime();
// Код для измерения
calculateSomething();
double elapsedSeconds = (System.nanoTime() - startNano) / 1_000_000_000.0;
System.out.printf("Время выполнения: %.6f сек%n", elapsedSeconds);

3. Современный и рекомендуемый способ (Java 8+): Используйте классы java.time.Instant и java.time.Duration для более читаемого и надежного API.

Instant start = Instant.now();
// Операция
processData();
Duration duration = Duration.between(start, Instant.now());
System.out.println("Прошло: " + duration.toMillis() + " мс");
System.out.println("Прошло: " + duration.toNanos() + " нс");