编译器优化:Java字节码

时间:2009-11-05 11:41:22

标签: java optimization compiler-construction bytecode

我目前正在编写一个针对Java字节码的玩具编译器。

我想知道在编写.class文件之前是否存在可以在发出的字节码中进行的各种简单窥视孔优化的某种目录,可能是摘要。我实际上知道一些具有此功能的库,但我想自己实现它。

1 个答案:

答案 0 :(得分:19)

你知道Proguard吗? http://proguard.sourceforge.net/

这是一个很棒的字节码优化器,可以实现很多优化。请参阅常见问题解答以获取列表:http://proguard.sourceforge.net/FAQ.html

  • 评估常量表达式。
  • 删除不必要的字段访问和方法 呼叫。
  • 删除不必要的分支。
  • 删除不必要的比较和 instanceof测试。
  • 删除未使用的代码 块。
  • 合并相同的代码块。
  • 减少变量分配。
  • 移除 只写字段和未使用的方法 参数。
  • 内联常量字段, 方法参数和返回值。
  • 简短或仅限的内联方法 叫了一次。
  • 简化尾递归 调用。
  • 合并类和接口。
  • 将方法设为私有,静态和 尽可能决定。
  • 上课 尽可能静态和最终。
  • 替换具有单个的接口 实现。
  • 执行超过200 窥视孔优化,如 将...... * 2替换为......<< 1。
  • 任选地 删除日志记录代码。

我确信您可以进一步查看源代码以了解它们的实现方式。