Узнать время работы программы java

: 24

Как определить время работы метода.

Вычитала на сайте, что для этого есть специальные функции. Но вот там сайт на С++. И на сайте есть код, который мне показался интересным и который я хочу реализовать на java:

long time; // засечь время time = TickCount(); // сортировка // Подсчитать время выполнения в секундах. time = TickCount() — time; cout

Есть ли в яве какой-то метод,чтобы подсчитать время выполнения метода, как в С++ TickCount()??

: 1,010

long timeout= System.currentTimeMillis(); //—- timeout = System.currentTimeMillis() — timeout;

ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение — плюс к премии. Выдал бан — лучший модератор месяца со всеми вытекающими.

Источник: www.programmersforum.ru

Как найти время, необходимое для запуска Java-программы?

У меня есть Java-приложение, над которым я работаю, и я только что понял, что программа должна вернуть значение менее чем за минуту, но не знаю, как найти или отобразить время, затраченное на запуск программы. Как найти время, необходимое для запуска программы?

Чем занимается Java backend разработчик, типичные задачи и обязанности, порядок работы над задачами

user836367 11 июл ’11 в 06:25 2011-07-11 06:25
2011-07-11 06:25

6 ответов

long startTime = System.nanoTime(); //code long endTime = System.nanoTime(); System.out.println(«Took «+(endTime — startTime) + » ns»);

Увидеть

  • System.nanoTime()

user260990 11 июл ’11 в 06:34 2011-07-11 06:34
2011-07-11 06:34

Нет встроенного способа узнать, как долго работает ваша программа. Однако в начале программы вы можете просто сохранить текущее время, чтобы через некоторое время вы могли увидеть, сколько времени прошло.

public class MyProgram < private static long startTime = System.currentTimeMillis(); public static void main(String[] args) < // Do stuff. // At the end long endTime = System.currentTimeMillis(); System.out.println(«It took » + (endTime — startTime) + » milliseconds»); >>
user135589 11 июл ’11 в 06:35 2011-07-11 06:35
2011-07-11 06:35

Если у вас есть Spring в качестве зависимости вашего проекта (или вы не против добавить его), вы можете использовать StopWatch , Как следует из названия, после инициализации он будет считать время, пока вы его не остановите. Затем вы можете проверить время, необходимое для выполнения задачи. Несколько StopWatches могут быть использованы одновременно для нескольких задач, сохраняя код в чистоте.

Читайте также:
Программе настройки конфигурации не удалось сохранить

Помимо поддержания вашего кода в чистоте, StopWatches помогает с форматированием времени и другими служебными методами.

public void myMethod() < StopWatch stopWatch = new StopWatch(); stopWatch.start(«Task1»); // . // Do my thing // . stopWatch.stop(); System.out.println(«Task executed in » + StopWatch.getTotalTimeSeconds() + «s»); >
user1805077 27 июн ’16 в 19:52 2016-06-27 19:52
2016-06-27 19:52

Вы можете использовать 2 API, предоставляемые System учебный класс

Java Algorithms #1: поиск минимального, максимального и среднего значения

  1. System.currentTimeMillis() Если код занимает время в миллисекундном диапазоне
  2. System.nanoTime() Если код занимает время в наносекундном диапазоне

Образец кода

public class TestTimeTaken < public static void main(String args[]) throws InterruptedException< long startTimeNanoSecond = System.nanoTime(); long startTimeMilliSecond = System.currentTimeMillis(); //code Thread.sleep(1000); //code long endTimeNanoSecond = System.nanoTime(); long endTimeMilliSecond = System.currentTimeMillis(); System.out.println(«Time Taken in «+(endTimeNanoSecond — startTimeNanoSecond) + » ns»); System.out.println(«Time Taken in «+(endTimeMilliSecond — startTimeMilliSecond) + » ms»); >>
user2702249 27 июн ’18 в 10:17 2018-06-27 10:17
2018-06-27 10:17

Если вы просто хотите узнать, как долго работает ваша программа, используйте System.currentTimeMillis() в начале и конце вашей программы.

user478399 11 июл ’11 в 06:37 2011-07-11 06:37
2011-07-11 06:37

Мне нравится использовать класс Apache Commons StopWatch, когда у меня есть библиотека.

import org.apache.commons.lang3.time.StopWatch; // . StopWatch stopWatch = new StopWatch(); String message = «Task : %s (%s) seconds»; // . stopWatch.split(); System.out.println(String.format(message, «10», stopWatch.toSplitString())); // . stopWatch.split(); System.out.println(String.format(message, «20», stopWatch.toSplitString())); stopWatch.stop();

Источник: stackru.com

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

Большинство поисковых запросов в Google возвращают результаты для таймеров, которые планируют потоки и задачи, что мне не нужно.

Ogre Psalm33 8 Окт 2008 в 00:10

JAMon API — это бесплатный, простой, высокопроизводительный, потокобезопасный Java API, который позволяет разработчикам легко контролировать производительность и масштабируемость производственных приложений. JAMon отслеживает совпадения, время выполнения (общее, среднее, минимальное, максимальное, стандартное отклонение) и многое другое. http://jamonapi.sourceforge.net/ скачать: http://sourceforge.net/project/showfiles.php?group_id=96550

8 Окт 2008 в 01:47

Вы также можете посмотреть ссылку Класс Apache Commons Lang StopWatch. Простой, но полезный служебный класс.

user101561
5 Май 2009 в 17:10
Позже аналогичный вопрос: Как мне написать правильный микротест на Java?
Basil Bourque
2 Июл 2016 в 01:48
Да, секундомер отлично подходит для этого.
Shubham Pandey
1 Авг 2019 в 09:08
Java 8 с использованием класса Instant : stackoverflow.com/a/30975902/1216775
akhil_mittal

Читайте также:
Как узнать фпс на компьютере без программ

1 Авг 2019 в 14:36

31 ответ

Лучший ответ

Всегда есть старомодный способ:

long startTime = System.nanoTime(); methodToTime(); long endTime = System.nanoTime(); long duration = (endTime — startTime); //divide by 1000000 to get milliseconds.
michaelsnowden 9 Июл 2016 в 00:49

На самом деле, это «по-новому», потому что вы использовали nanoTime, который не был добавлен до java5

John Gardner
8 Окт 2008 в 02:26

Это (или использование System.currentTimeMillis ()) похоже на то, как это обычно делается в Java . что я все равно видел. Меня все еще слегка удивляет, что нет удобного встроенного класса, такого как Timer t = new Timer (); Строка s = t.getElapsed (формат); так далее.

Ogre Psalm33
8 Окт 2008 в 16:48

NanoTime не гарантирует лучшей точности, чем currentTimeMillis (), хотя обычно это так. forum.sun.com/thread.jspa?messageID=9460663 и simongbrown.com/blog/2007/08/20/…

James Schek
8 Окт 2008 в 21:20

Конечно, всегда важно помнить о подводных камнях микротестирования, таких как оптимизация компилятора / JVM, которая может исказить результат = 😎

7 Янв 2009 в 18:26

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

Peter Lawrey
5 Май 2009 в 23:42

Используя Instant и Duration из нового API Java 8,

Instant start = Instant.now(); Thread.sleep(5000); Instant end = Instant.now(); System.out.println(Duration.between(start, end));
PT5S
beldaz 22 Июн 2015 в 12:03
Спасибо, как я могу вывести результат, не имея ПТ впереди?
java123999
16 Мар 2016 в 18:31

Проблема с методом заключается в том, что Instant не нарушает точность в миллисекундах и наносекундах. Ссылка: stackoverflow.com/questions / 20689055 /…

prashantsunkari
13 Апр 2017 в 01:56
Emil Lunde
29 Май 2018 в 16:29

Собрали все возможные пути в одном месте.

Date startDate = Calendar.getInstance().getTime(); long d_StartTime = new Date().getTime(); Thread.sleep(1000 * 4); Date endDate = Calendar.getInstance().getTime(); long d_endTime = new Date().getTime(); System.out.format(«StartDate : %s, EndDate : %s n», startDate, endDate); System.out.format(«Milli = %s, ( D_Start : %s, D_End : %s ) n», (d_endTime — d_StartTime),d_StartTime, d_endTime);
long startTime = System.currentTimeMillis(); Thread.sleep(1000 * 4); long endTime = System.currentTimeMillis(); long duration = (endTime — startTime); System.out.format(«Milli = %s, ( S_Start : %s, S_End : %s ) n», duration, startTime, endTime ); System.out.println(«Human-Readable format : «+millisToShortDHMS( duration ) );

Удобочитаемый формат

public static String millisToShortDHMS(long duration) < String res = «»; // java.util.concurrent.TimeUnit; long days = TimeUnit.MILLISECONDS.toDays(duration); long hours = TimeUnit.MILLISECONDS.toHours(duration) — TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(duration)); long minutes = TimeUnit.MILLISECONDS.toMinutes(duration) — TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(duration)); long seconds = TimeUnit.MILLISECONDS.toSeconds(duration) — TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration)); long millis = TimeUnit.MILLISECONDS.toMillis(duration) — TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(duration)); if (days == 0) res = String.format(«%02d:%02d:%02d.%04d», hours, minutes, seconds, millis); else res = String.format(«%dd %02d:%02d:%02d.%04d», days, hours, minutes, seconds, millis); return res; >

Читайте также:
Программа ревит требования к компьютеру

Гуава: Google Секундомер JAR « Секундомер измеряет прошедшее время в наносекундах.

com.google.common.base.Stopwatch g_SW = Stopwatch.createUnstarted(); g_SW.start(); Thread.sleep(1000 * 4); g_SW.stop(); System.out.println(«Google StopWatch : «+g_SW);

Apache Commons Lang JAR «StopWatch предоставляет удобный API для определения времени.

org.apache.commons.lang3.time.StopWatch sw = new StopWatch(); sw.start(); Thread.sleep(1000 * 4); sw.stop(); System.out.println(«Apache StopWatch : «+ millisToShortDHMS(sw.getTime()) );

JODA -TIME

public static void jodaTime() throws InterruptedException, ParseException < java.text.SimpleDateFormat ms_SDF = new SimpleDateFormat(«yyyy/MM/dd HH:mm:ss.SSS»); String start = ms_SDF.format( new Date() ); // java.util.Date Thread.sleep(10000); String end = ms_SDF.format( new Date() ); System.out.println(«Start:»+start+»t Stop:»+end); Date date_1 = ms_SDF.parse(start); Date date_2 = ms_SDF.parse(end); Interval interval = new org.joda.time.Interval( date_1.getTime(), date_2.getTime() ); Period period = interval.toPeriod(); //org.joda.time.Period System.out.format(«%dY/%dM/%dD, %02d:%02d:%02d.%04d n», period.getYears(), period.getMonths(), period.getDays(), period.getHours(), period.getMinutes(), period.getSeconds(), period.getMillis()); >

API даты и времени Java из Java 8 «Продолжительность представляет собой период времени между двумя Instant объектов.

Instant start = java.time.Instant.now(); Thread.sleep(1000); Instant end = java.time.Instant.now(); Duration between = java.time.Duration.between(start, end); System.out.println( between ); // PT1.001S System.out.format(«%dD, %02d:%02d:%02d.%04d n», between.toDays(), between.toHours(), between.toMinutes(), between.getSeconds(), between.toMillis()); // 0D, 00:00:01.1001

Spring Framework предоставляет StopWatch служебный класс для измерения прошедшего времени в Java.

StopWatch sw = new org.springframework.util.StopWatch(); sw.start(«Method-1»); // Start a named task Thread.sleep(500); sw.stop(); sw.start(«Method-2»); Thread.sleep(300); sw.stop(); sw.start(«Method-3»); Thread.sleep(200); sw.stop(); System.out.println(«Total time in milliseconds for all tasks :n»+sw.getTotalTimeMillis()); System.out.println(«Table describing all tasks performed :n»+sw.prettyPrint()); System.out.format(«Time taken by the last task : [%s]:[%d]», sw.getLastTaskName(),sw.getLastTaskTimeMillis()); System.out.println(«n Array of the data for tasks performed « Task Name: Time Taken»); TaskInfo[] listofTasks = sw.getTaskInfo(); for (TaskInfo task : listofTasks)
Total time in milliseconds for all tasks : 999 Table describing all tasks performed : StopWatch »: running time (millis) = 999 —————————————— ms % Task name —————————————— 00500 050% Method-1 00299 030% Method-2 00200 020% Method-3 Time taken by the last task : [Method-3]:[200] Array of the data for tasks performed « Task Name: Time Taken [Method-1]:[500] [Method-2]:[299] [Method-3]:[200]
Yash 26 Апр 2018 в 12:20

Секундомер Guava, Apache Commons и Spring Framework не являются потокобезопасными. Небезопасно для производственного использования.

Источник: question-it.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru