Научитесь рассчитывать время выполнения или измерять прошедшее время программы или некоторых операторов Java, используя различные методы до и после выпуска Java 8.
1. Измерение времени, прошедшего с момента выхода Java 8
Если мы используем Java 8 – мы можем попробовать новые классы java.time.Instant и java.time.Duration. Ниже Java 8 перейдите к следующему методу в статье.
Чтобы получить истекшее время выполнения в разных единицах времени, используйте следующий метод. Он измеряет длительность между двумя Мгновениями. А Мгновения представляют собой время, прошедшее с эпохи.
long timeElapsed = Duration.between(startInstant, finishInstant).toMillis();
import java.text.ParseException;import java.util.concurrent.TimeUnit;public class Main{public static void main(String[] args) throws ParseException{Instant start = Instant.now();//Measure execution time for this methodmethodToTime();Instant finish = Instant.now();long timeElapsed = Duration.between(start, finish).toMillis(); //in millis}private static void methodToTime() {try {TimeUnit.SECONDS.sleep(3);} catch(InterruptedException e) {e.printStackTrace();}}}
Вывод программы.
3000
2. Система.nanoTime()
Это наиболее рекомендуемое решение для измерения прошедшего времени в Java. Оно обеспечивает точность наносекундного уровня прошедшего времени между двумя измерениями. Это наиболее предпочтительный подход для расчета времени выполнения потока в Java.
import java.text.ParseException;import java.util.concurrent.TimeUnit;public class Main{public static void main(String[] args) throws ParseException{long startTime = System.nanoTime();methodToTime(); //Measure execution time for this methodlong endTime = System.nanoTime();long durationInNano =(endTime - startTime); //Total execution time in nano seconds//Same duration in millislong durationInMillis = TimeUnit.NANOSECONDS.toMillis(durationInNano); //Total execution time in nano secondsSystem.out.println(durationInNano);System.out.println(durationInMillis);}private static void methodToTime() {try {TimeUnit.SECONDS.sleep(3);} catch(InterruptedException e) {e.printStackTrace();}}}
Вывод программы.
3000076434 //More precise3000
3. Система.currentTimeMillis()
Если вас не слишком волнует точность наноуровня или вы, к сожалению, все еще застряли в устаревших версиях Java — вам следует использовать метод System.currentTimeMillis().
import java.text.ParseException;import java.util.concurrent.TimeUnit;public class Main{public static void main(String[] args) throws ParseException{long startTime = System.currentTimeMillis();methodToTime(); //Measure execution time for this methodlong endTime = System.currentTimeMillis();long duration =(endTime - startTime); //Total execution time in milli secondsSystem.out.println(duration);}private static void methodToTime() {try {TimeUnit.SECONDS.sleep(3);} catch(InterruptedException e) {e.printStackTrace();}}}
Вывод программы.
3000
Мы можем преобразовать указанное выше время в миллисах в другие единицы времени, такие как часы, минуты и секунды, чтобы измерить время выполнения в соответствующих единицах времени.