-1

下面是Java字节码,

0: iconst_1
1: istore_1
2: iload_1
3: ...

我可以优化它

0: iconst_1
1: ...

但是,我想知道这是否总是安全的,或者我们什么时候可以确保这种优化是安全的?

4

2 回答 2

2

如果方法代码中的某处存在另一条指令,则此优化是不安全的。iload_1

更重要的是,这种手动优化毫无意义。JIT 编译器本身很容易清除过多的数据分配,因此原始代码和“优化”代码在编译后会产生相同的机器代码。

于 2012-10-31T09:26:16.300 回答
1

JIT 查找编译器生成的集合模式并对其进行优化。如果您手动生成或更改代码,您必须确保您生成的代码对您来说看起来更简单,但无法通过 JIT 轻松优化,即导致执行速度变慢。

正如@Alexei 所说,它不安全,我怀疑它不会更快但可能会更慢。

于 2012-10-31T09:39:05.093 回答