java - 编译器优化 : Java bytecode

标签 java optimization compiler-construction bytecode

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

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

最佳答案

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

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

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

我相信您可以进一步查看源代码以了解它们是如何实现的。

关于java - 编译器优化 : Java bytecode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1680024/

相关文章:

java - 如何使用 bash 在 linux 系统上构建/运行 java 项目?

java - 如何将外部文件夹添加到 Jetty 的类路径

Web View 中的 java.lang.IllegalArgumentException

java - 如何提高从 hazelcast 读取数据的 Get 方法性能?

c - 打印语句在无限循环之前不会打印

java - 尝试访问 JavaBean 时引发的异常

R 为 fn 和 gr 优化相同的函数

r - 优化 R 中的向量索引和矩阵创建

c++ - 引擎 Matlab 问题

python - 通过解释器变异混淆 python 字节码