Я создал фильтр, который отслеживает длину запроса.
long start = System.nanoTime();
...
long end = System.nanoTime();
Как я могу получить количество миллисекунд из этого сейчас?
Я создал фильтр, который отслеживает длину запроса.
long start = System.nanoTime();
...
long end = System.nanoTime();
Как я могу получить количество миллисекунд из этого сейчас?
(end - start) / 1000000
1 микросекунд = 1000 наносекунд
1 миллисекунда = 1000 мкс
Обратите внимание, что результат будет округлен, но вы, как правило, не получите истинной точности наносекунды (точность зависит от ОС). Из Javadoc на nanoTime()
:
Этот метод обеспечивает наносекундную точность, но не обязательно наносекундную точность.
Также обратите внимание, что вы можете использовать класс TimeUnit для помощи при преобразовании. В более старых версиях Java следующий код может быть примером для преобразования времени обработки в другой формат времени:
long startTime = System.nanoTime();
//Processing in-between.
long endTime = System.nanoTime();
long duration = endTime - startTime;
duration = TimeUnit.SECONDS.convert(duration, TimeUnit.NANOSECONDS);
Обратите внимание, что более новые версии Java имеют ярлыки в классе TimeUnit.
Вышеприведенный образец превратит наносекунды в считанные секунды. Также обратите внимание, что это усекает его, поэтому вы теряете определенную точность. Поэтому, если вы переключитесь на минуты, вы потеряете точность секунд. Если вы хотите получить результат "12 минут и 32 секунды", вам нужно будет продолжить обработку с помощью этого решения.
Просто вычтите их и разделите результат на 10 ^ 6.
1 наносекунда составляет 10 ^ -9 секунд и, соответственно, 10 ^ -6 миллисекунд.
http://en.wikipedia.org/wiki/Nano-
Чтобы получить осмысленный результат:
void procedure ( ... )
{
...
}
double measureProcedure ( double epsilon , ... )
{
double mean ;
double stderr = 2 * epsilon ;
while ( stderr > epsilon )
{
long start = System.nanoTime();
procedure ( ... ) ;
long end = System.nanoTime();
// recalculate mean , stderr
}
return ( mean / 1000000 ) ;
}
TimeUnit.NANOSECONDS.toMillis(end - start);
Что все!
Вы можете просто использовать System.currentTimeMillis()
.
Протест:
Обратите внимание, что хотя единица времени возвращаемого значения равна миллисекунде, степень детализации зависит от базовой операционной системы и может быть больше. Например, многие операционные системы измеряют время в единицах десятков миллисекунд.