在Java中使用TimeUnit转换的性能受到了影响

时间:2018-05-11 19:13:44

标签: java performance timeunit

我想知道使用TimeUnit转换是否有任何性能损失(即使它是最小的)。 例如TimeUnit.MINUTES.toMillis(5)vs 300000

如果这是一个经常被调用的方法,并且每次都有任何性能受到影响,它必须运行toMillis?或者编译器已经设置了一次转换后的值,它再也不会被引用了?

1 个答案:

答案 0 :(得分:0)

以下是TimeUnit(JDK 10)的源代码: http://hg.openjdk.java.net/jdk10/jdk10/jdk/file/tip/src/java.base/share/classes/java/util/concurrent/TimeUnit.java

我不能说编译器会做什么,但你最好自己计算一下这个值,或者你最好不要计算和缓存这个值,或者你最好提前创建一个查找表。正如@Turing85在对你的问题的评论中明确指出的那样,"很难说JIT会做什么或不会做什么。或者有时可能会这样做。"

如果您发布了一些示例代码来为您的问题提供上下文,那么您可能会从答案中获得更多的好处,而不是单独询问toMillis。可能有更好的方法来解决整体问题,因此在将分钟转换为毫秒时,您不必担心性能这么小的细节。