Определение количества времени (в долях (хотя и небольшого)) секунды в Java (при поиске решения)? - PullRequest
0 голосов
/ 15 ноября 2011

У меня есть программа, которая выдает простое исключение, когда оно завершается, когда выдается это исключение, есть ли способ обработать его как секундомер, остановить таймер и показать, сколько времени потребовалось для решения данной проблемы?

Большое спасибо!

Ответы [ 3 ]

1 голос
/ 15 ноября 2011

миллисекунды

System.currentTimeMillis() - это функция, которая возвращает текущее время в миллисекундах. Вы можете вызвать эту функцию один раз, когда начнете, и снова, когда закончите, затем найдите разницу, чтобы определить, сколько времени прошло.

Например:

public void foo() {
    long startTime = System.currentTimeMillis();

    try {
        doStuff();
    } catch (Exception e) {
        long endTime = System.currentTimeMillis();
        long elapsedTime = endTime - startTime;
        System.out.println("This operation took " + elapsedTime + " milliseconds.");
    }
}

наносекунд

Вы также можете использовать System.nanoTime(), который с точностью до наносекунды (а не с точностью до миллисекунды), но он более ограничен в том, какую разницу он может изобразить.

0 голосов
/ 15 ноября 2011

Обработка исключений - это особенно плохой метод управления потоком - гораздо лучше вывести break из цикла, установить условный цикл в false или вернуться из вашего рекурсивного метода.

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

0 голосов
/ 15 ноября 2011

В простейшем случае используйте System.currentTimeMillis(), чтобы записать время начала и окончания (вычитая начало из остановки в блоке catch).Есть более сложные подходы с симпатичными интерфейсами.См., Например:

Просто убедитесь, что таймер находится в области видимости, когда ловится исключение.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...