如何通过减去2个nanoTime对象来获得有意义的结果?

2022-09-03 08:21:49

我创建了一个监视请求长度的筛选器。

long start = System.nanoTime();

...

long end = System.nanoTime();

我现在如何从中获取毫秒数?


答案 1
(end - start) / 1000000

1 微秒 = 1000 纳秒

1 毫秒 = 1000 微秒

请注意,结果将向下舍入,但您通常不会获得真正的纳秒精度(精度取决于操作系统)。从 Javadoc 上:nanoTime()

此方法提供纳秒级精度,但不一定提供纳秒级精度。


答案 2

另请注意,您可以使用 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秒”的结果,则必须使用此解决方案进行进一步处理。


推荐