Ответ
В 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() + " нс");