Программная инженерия и программирование
Расчет времени выполнения на Java: методы и примеры из реального мира
Table of Contents
Измерение времени выполнения кода имеет важное значение для оптимизации производительности в приложениях Java. Это помогает разработчикам выявлять узкие места и повышать эффективность. В этой статье рассматриваются общие методы расчета времени выполнения и приводятся практические примеры.
Использование System.nanoTime()
Метод System.nanoTime() предлагает измерение времени с высоким разрешением. Он возвращает текущее значение наиболее точного доступного системного таймера за наносекунды. Для измерения времени выполнения записывайте время начала до запуска кода и время окончания после. Разница указывает на прошедшее время.
Пример:
long startTime = System.nanoTime();]
//код для измерения
long endTime = System.nanoTime();]
Длительность = конечное время — время начала;]
Используя System.currentTimeMillis()
Метод System.currentTimeMillis() обеспечивает текущее время в миллисекундах. Он менее точен, чем , но подходит для измерения более длительных периодов. Подобно предыдущему методу, записывайте время начала и окончания вокруг блока кода.
Пример:
long startTime = System.currentTimeMillis();]
//код для измерения
long endTime = System.currentTimeMillis();]
Длительность = конечное время — время начала;]
Использование Java Instant Class
Класс Instant из пакета java.time предлагает современный подход к измерению времени. Он обеспечивает наносекундную точность и подходит для измерения длительностей.
Пример:
Мгновенный старт = Мгновенный.сейчас();]
//код для измерения
Мгновенный конец = Мгновенный.сейчас();]
Продолжительность = Продолжительность. между (начало, конец);]
Реальный пример
Предположим, вы хотите измерить, сколько времени требуется для сортировки большого массива. Используя System.nanoTime(), вы можете реализовать следующее:
int[] array = new int[1 000 000];]
// populate array
long startTime = System.nanoTime();]
Arrays.sort(array);]
long endTime = System.nanoTime();]
System.out.println("Sorting take" + (endTime - startTime) + "noseconds");