gpt4 book ai didi

java - 为什么 javac 甚至不优化简单的代码?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:29:32 32 4
gpt4 key购买 nike

给定以下代码:

public class MainClass {
public static int f(){
int i=0;
i++;
return i;
}
}

编译器 javac 生成以下代码:

Compiled from "MainClass.java"
public class latte_jvm.MainClass {

public static int f();
Code:
0: iconst_0
1: istore_0
2: iinc 0, 1
5: iload_0
6: ireturn
}

函数 f 做的​​事情非常简单——它只返回 1。它的翻译如此直接以至于我很难相信 java 编译器会做任何优化。为什么 Java 编译器创建者决定不在编译阶段进行此类优化?

最佳答案

Is so directly translated that it makes me hard to believe that java compiler does any optimizations at all.

的确如此。大多数 Java 优化是在 JIT 时间执行的。 Java 维护人员很久以前就发现,在许多情况下,在编译时 执行的优化实际上阻碍了在 JIT 时执行更重要的优化。

几年来,-O 命令行参数什么也没做——而且是故意这样做的。

关于java - 为什么 javac 甚至不优化简单的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13611829/

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