首页 > 解决方案 > 在 Java 中使用 TimeUnit 转换的性能下降

问题描述

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

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

标签: javaperformancetimeunit

解决方案


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

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

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


推荐阅读