我创建了一个过滤器来监控请求的长度。
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 ) ;
}