编译器优化:Java 字节码

2023-10-14Java开发问题
3

本文介绍了编译器优化:Java 字节码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

I'm currently writing a toy compiler targeting Java bytecode in the translation.

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

I would like to know if there is some kind of catalog, maybe a summary, of various simple peephole optimizations that can be made in the emitted bytecode before writing the .class file. I actually am aware of some libraries that have this functionality, but I'd like to implement that myself.

推荐答案

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

You are aware of Proguard? http://proguard.sourceforge.net/

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

This is a great bytecode optimizer which implements a lot of optimizations. See the FAQ for a list: http://proguard.sourceforge.net/FAQ.html

  • 计算常量表达式.
  • 删除不必要的字段访问和方法来电.
  • 删除不必要的分支.
  • 删除不必要的比较和实例测试.
  • 删除未使用的代码块.
  • 合并相同的代码块.
  • 减少变量分配.
  • 移除只写字段和未使用的方法参数.
  • 内联常量字段,方法参数和返回值.
  • 内联方法很短或只有调用一次.
  • 简化尾递归来电.
  • 合并类和接口.
  • 将方法设为私有、静态和尽可能最终.
  • 制作课程尽可能静态和最终.
  • 替换具有单个的接口实施.
  • 表演超过 200窥视孔优化,例如将 ...*2 替换为 ...<<1.
  • 可选删除日志记录代码.

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

I'm sure you can further look into the source code to understand how they are implemented.

这篇关于编译器优化:Java 字节码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

如何使用 JAVA 向 COM PORT 发送数据?
How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)...
2024-08-25 Java开发问题
21

如何使报表页面方向更改为“rtl"?
How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)...
2024-08-25 Java开发问题
19

在 Eclipse 项目中使用西里尔文 .properties 文件
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)...
2024-08-25 Java开发问题
18

有没有办法在 Java 中检测 RTL 语言?
Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)...
2024-08-25 Java开发问题
11

如何在 Java 中从 DB 加载资源包消息?
How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)...
2024-08-25 Java开发问题
13

如何更改 Java 中的默认语言环境设置以使其保持一致?
How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)...
2024-08-25 Java开发问题
13