Есть два способа измерить истекшее время выполнения в Java , используя System.currentTimeinMillis () или System.nanoTime ().  Эти два метода могут использоваться для измерения прошедшего времени или времени выполнения между двумя вызовами метода или событием в Java.  Вычисление истекшего времени — одна из первых вещей, которую Java-программист делает, чтобы узнать, сколько секунд или миллисекунд занимает выполнение метода или сколько времени занимает конкретный блок кода.  Большинство программистов на Java знакомы с System.currentTimeInMillis (), которая существует с самого начала, в то время как в Java 1.5 представлена новая версия более точной утилиты измерения времени System.nanoTime, а также несколько новых функций в языке, таких как Generics , типы Enum , auto бокс и переменные аргументы или переменные .  Вы можете использовать любой из них для измерения времени выполнения метода в Java.  Хотя лучше использовать System.nanoTime () для более точного измерения временных интервалов. 
  В этом руководстве по Java-программированию мы увидим простую Java-программу для измерения времени выполнения с помощью System.nanoTime () и служебного класса StopWatch фреймворка Spring.  Эта статья является продолжением моего поста, посвященного фундаментальным концепциям Java, таким как « Как сравнивать String в Java» , « Как правильно писать метод equals в Java» и « 4 способа зацикливания HashMap в Java» .  Если вы еще не прочитали их, вы можете найти их полезными. 
Пример программы Java для измерения времени выполнения в Java
  Вот пример кода для измерения прошедшего времени между двумя кодовыми блоками с использованием System.nanoTime, M любых библиотек Java с открытым исходным кодом, таких как Apache commons lang, Google commons и Spring, также предоставляет служебный класс StopWatch, который можно использовать для измерения прошедшего времени в Java .  StopWatch улучшает читабельность, сводя к минимуму ошибки вычислений при расчете истекшего времени выполнения, но имейте в виду, что StopWatch не является поточно- ориентированным и не должен использоваться совместно в многопоточной среде, а в его документации четко сказано, что это больше подходит для разработки и тестирования, а не для базовых измерений производительности. выполнение расчета времени в производственной среде. 
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | importorg.springframework.util.StopWatch;/** * Simple Java Program to measure elapsed execution time in Java * This Java Program shows two ways for measuring time in Java, by using System.nanoTime() which was * added in Java 5 and StopWatch which is a utility class from Spring Framework. */publicclassMeasureTimeExampleJava {     publicstaticvoidmain(String args[]) {             //measuring elapsed time using System.nanoTime        longstartTime = System.nanoTime();        for(inti=0; i < 1000000; i++){            Object obj = newObject();        }        longelapsedTime = System.nanoTime() - startTime;             System.out.println("Total execution time to create 1000K objects in Java in millis: "                + elapsedTime/1000000);             //measuring elapsed time using Spring StopWatch        StopWatch watch = newStopWatch();        watch.start();        for(inti=0; i < 1000000; i++){            Object obj = newObject();        }        watch.stop();        System.out.println("Total execution time to create 1000K objects in Java using StopWatch in millis: "                + watch.getTotalTimeMillis());    }       }Output:Total execution time to create 1000K objects in Java in millis: 18Total execution time to create 1000K objects in Java using StopWatch in millis: 15 | 
  Какой из них вы должны использовать для измерения времени выполнения в Java 
  Это зависит от того, какие опции вам доступны, если вы работаете в версии ниже JDK 1.5, чем System.currentTimeInMillis () — лучший вариант с точки зрения доступности, тогда как после JDK 1.5 System.nanoTime отлично подходит для измерения истекшего времени, поскольку он более точен и использует точные системные часы и может измерять с точностью до нано секунды .  в то время как если вы используете какую-либо из библиотек Java с открытым исходным кодом, упомянутых выше, в основном Spring, а не StopWatch также является лучшим вариантом, но, как я уже говорил, StopWatch не является поточно- ориентированным и должен использоваться только в среде разработки и тестирования.  Так же, как SimpleDateFormat не является поточно-ориентированным, и вы можете использовать ThreadLocal для создания в каждом потоке SimpleDateFormat, вы можете сделать то же самое и с StopWatch.  Но я не думаю, что StopWatch — это тяжелый объект, такой как SimpleDateFormat. 
  Это все о том, как измерить прошедшее время или время выполнения в Java .  Получите привычку измерять производительность и время выполнения важных фрагментов кода, особенно методов или циклов, которые выполняются большую часть времени.  Это те места, где небольшая оптимизация кода приводит к увеличению производительности. 
  Ссылка: Как измерить истекшее время выполнения в Java — Пример StopWatch от нашего партнера JCG Джавина Пола в блоге Javarevisited .