Есть ли в Яве секундомер? В Google я нахожу только код секундомеров, которые не работают - они всегда возвращают 0 миллисекунд.
Этот код, который я нашел, не работает, но я не понимаю почему.
public class StopWatch {
private long startTime = 0;
private long stopTime = 0;
private boolean running = false;
public void start() {
this.startTime = System.currentTimeMillis();
this.running = true;
}
public void stop() {
this.stopTime = System.currentTimeMillis();
this.running = false;
}
//elaspsed time in milliseconds
public long getElapsedTime() {
long elapsed;
if (running) {
elapsed = (System.currentTimeMillis() - startTime);
} else {
elapsed = (stopTime - startTime);
}
return elapsed;
}
//elaspsed time in seconds
public long getElapsedTimeSecs() {
long elapsed;
if (running) {
elapsed = ((System.currentTimeMillis() - startTime) / 1000);
} else {
elapsed = ((stopTime - startTime) / 1000);
}
return elapsed;
}
}
currentTimeMillis()
для производства, так как это привязано к системной дате / времени и не гарантирует однообразия (например, вы можете получить отрицательное прошедшее время). Для измерения использования времениnanoTime()
- оно гарантированно однообразное и предназначено именно для целей измерения. См. Docs.oracle.com/javase/8/docs/api/java/lang/…Ответы:
Вы найдете его в
http://commons.apache.org/lang/
Это называется
Но он примерно такой же, как и ваш. Если вам нужна более высокая точность, используйте
См. Также этот вопрос здесь:
Накладные расходы на измерение времени в Java
источник
Используйте класс Guava
Stopwatch
.источник
getStartTime()
, apache отсутствуетisRunning()
аааааТеперь вы можете попробовать что-то вроде:
Выходные данные соответствуют ISO 8601.
источник
Spring предоставляет элегантный
org.springframework.util.StopWatch
класс (модуль spring-core).источник
Используйте,
System.currentTimeMillis()
чтобы получить время начала и время окончания и вычислить разницу.Больше информации в этом руководстве
источник
Код не работает, потому что прошедшая переменная в
getElapsedTimeSecs()
не являетсяfloat
илиdouble
.источник
Встроенной утилиты секундомера нет, но с JSR-310 (Java 8 Time) вы можете сделать это просто.
Я не тестировал это должным образом, но полагаю, что использование секундомера Guava более эффективно.
источник
попробуйте это http://introcs.cs.princeton.edu/java/stdlib/Stopwatch.java.html
это очень просто
Этот класс является частью stdlib.jar
источник
Простой класс секундомера из коробки:
Использование:
источник
используйте: com.google.common.base.Stopwatch, это просто и легко.
пример:
на эту задачу ушло 112 мельниц
источник
попробуй это
источник
Попробуй это:
Использование:
источник
Попробуй это.
Использование:
Приставка:
источник
currentTimeMillis()
привязан к системной дате / времени и не гарантирует однообразия (например, истекшее время может быть отрицательным).System.nanoTime()
чтобы всегда получать правильные результаты.Performetrics предоставляет удобный класс Stopwatch именно так, как вам нужно. Он может измерять время настенных часов и многое другое: он также измеряет время процессора (время пользователя и системное время), если вам нужно. Он небольшой, бесплатный, и его можно скачать с Maven Central. Более подробную информацию и примеры можно найти здесь: https://obvj.net/performetrics
Вы можете преобразовать метрики в любую единицу времени (наносекунды, миллисекунды, секунды и т. Д.)
PS: Я являюсь автором инструмента.
источник
Вы можете найти удобный здесь:
https://github.com/varra4u/utils4j/blob/master/src/main/java/com/varra/util/StopWatch.java
Использование:
источник
Попробуй это.
Полностью рабочее решение Java Stopwatch
Здесь вы получите полностью рабочее решение.
Просто фрагмент из указанного выше решения:
Вы можете создать класс, подобный приведенному ниже коду, и использовать метод запуска и остановки этого класса до и после раздела кода, вы хотите измерить затраченное время.
}
Спасибо.
источник