gpt4 book ai didi

java - JVM 是否优化了不必要的自动装箱?

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:23 25 4
gpt4 key购买 nike

javac 或 JIT 是否优化了不必要的自动装箱?假设我们有一段代码。

for(int i=0; i<100000; i++) {
f(i);
}

void f(Integer i) {
System.out.println(i);
}

如何优化这段代码?我猜 f 将被内联,但是 int 的不必要的装箱呢(它没有被修改并且永远不会是 null)。假设该方法不是从任何其他代码片段调用的。如果方法签名是
会有什么不同吗 void f(final Integer i)?

最佳答案

OpenJDK 和 HotSpot JVM 5 - 8 不会优化它们,除非它们不被使用(即使不总是这样)

但是,当您提出这些问题或回答这些问题时,一定要有远见。 Autoboixing 与将数字转换为字符串的代码(JVM 执行此操作的方式)相比是微不足道的,与写入控制台相比也是微不足道的。如果你取出 System.out.println() 这将节省 99.99% 以上的时间,所以担心这里的自动装箱是担心错误的事情。

在您的特定情况下,它无法优化自动装箱的方式,因为调用了 PrintStream.println(Object) 。 JVM 通常不理解库的作用,并且它不能假设调用 PrintStream.println(int) 会做同样的事情。

关于java - JVM 是否优化了不必要的自动装箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21954137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com