我创建了一个监控请求长度的过滤器。
long start = System.nanoTime();
...
long end = System.nanoTime();
如何从此获得毫秒数?
答案 0 :(得分:42)
(end - start) / 1000000
1微秒= 1000纳秒
1毫秒= 1000微秒
请注意,结果将向下舍入,但您通常无法获得真正的纳秒精度(精度取决于操作系统)。来自nanoTime()
上的Javadoc:
此方法提供纳秒级精度,但不提供 必须达到纳秒精度。
答案 1 :(得分:10)
另请注意,您可以使用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秒"那么你将不得不用这个解决方案进行进一步的处理。
答案 2 :(得分:3)
TimeUnit.NANOSECONDS.toMillis(end - start);
这就是全部!
答案 3 :(得分:2)
只需减去它们并将结果除以10 ^ 6。
1纳秒是10 ^ -9秒,相应地,10 ^ -6毫秒 http://en.wikipedia.org/wiki/Nano-
答案 4 :(得分:1)
获得有意义的结果:
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 ) ;
}
答案 5 :(得分:0)