Как рассчитать время работы моей программы?

Возможный дубликат:
Как выполнить время выполнения метода в Java?

Я написал программу, и теперь я хочу рассчитать общее время работы моей программы от начала до конца.

Как я могу это сделать?

Ответ 1

Используйте currentTimeMillis(), чтобы получить текущее время.

long startTime = System.currentTimeMillis();
.....your program....
long endTime   = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println(totalTime);

Вот короткий учебник, если вам понадобится нечто более совершенное, чем это: http://java.sun.com/docs/books/performance/1st_edition/html/JPMeasurement.fm.html

Ответ 2

В начале вашего основного метода добавьте эту строку кода:

final long startTime = System.nanoTime();

И затем, в последней строке вашего основного метода, вы можете добавить:

final long duration = System.nanoTime() - startTime;

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

System.out.println(duration);

Если вы хотите показать время продолжительности в секундах, вы должны разделить значение на 1'000'000'000. Или, если вы хотите объект Date: Date myTime = new Date(duration / 1000); Затем вы можете получить доступ к различным методам Date для печати количества минут, часов и т.д.

Ответ 3

Использовать систему. currentTimeMillis() или System. nanoTime(), если вы хотите еще более точное считывание. Обычно миллисекунды достаточно точны, если вам нужно вывести значение пользователю. Кроме того, System.nanoTime() может возвращать отрицательные значения, поэтому может оказаться возможным, что если вы используете этот метод, возвращаемое значение неверно.

Общим и широким использованием будет использование миллисекунд:

long start = System.currentTimeMillis();

... 


long end = System.currentTimeMillis();

NumberFormat formatter = new DecimalFormat("#0.00000");
System.out.print("Execution time is " + formatter.format((end - start) / 1000d) + " seconds");

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

Ответ 4

Общий подход к этому:

  • Получите время в начале вашего теста, скажем, в начале main().
  • Запустите свой код.
  • Получите время в конце вашего теста, скажем, в конце main().
  • Вычтите время начала с конца и преобразуйте в соответствующие единицы.

Подсказка: посмотрите System.getCurrentTimeMillis() или System.nanoTime().

Ответ 5

Вам нужно получить время запуска приложения и сравнить его с временем окончания приложения.

В начале приложения:

Calendar calendar = Calendar.getInstance();

// Get start time (this needs to be a global variable).
Date startDate = calendar.getTime();

Когда приложение заканчивается

Calendar calendar = Calendar.getInstance();

// Get start time (this needs to be a global variable).
Date endDate = calendar.getTime();

Чтобы получить разницу (в миллисекундах), сделайте следующее:

long sumDate = endDate.getTime() - startDate.getTime();

Ответ 6

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