如何通过减去2个nanoTime对象来获得有意义的结果?
2022-09-03 08:21:49
我创建了一个监视请求长度的筛选器。
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秒”的结果,则必须使用此解决方案进行进一步处理。