ita*_*chi 9 java compiler-optimization
我决定检查Java编译器的明显性; 因此,我写了一个简单的课程.
public class Foo {
public Foo(boolean a, int b) {
if (a == true && a != false) {
b = 1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道编译器是否会将条件优化为更简单的条件:
if (a == true) {}
Run Code Online (Sandbox Code Playgroud)
我编译了该类,然后使用该javap工具对其进行了反汇编.当我看一下输出时,我真是傻眼了,因为编译器检查了这两个条件,下面清楚地显示了什么.
Compiled from "Foo.java"
public class Foo {
public Foo(boolean, int);
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: iload_1
5: iconst_1
6: if_icmpne 15
9: iload_1
10: ifeq 15
13: iconst_1
14: istore_2
15: return
}
Run Code Online (Sandbox Code Playgroud)
我只是好奇,为什么它可以执行冗余指令,什么时候可以优化到更简单的东西?
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |