<tfoot id='4Ti7b'></tfoot>
  • <legend id='4Ti7b'><style id='4Ti7b'><dir id='4Ti7b'><q id='4Ti7b'></q></dir></style></legend>

    • <bdo id='4Ti7b'></bdo><ul id='4Ti7b'></ul>

      <small id='4Ti7b'></small><noframes id='4Ti7b'>

        <i id='4Ti7b'><tr id='4Ti7b'><dt id='4Ti7b'><q id='4Ti7b'><span id='4Ti7b'><b id='4Ti7b'><form id='4Ti7b'><ins id='4Ti7b'></ins><ul id='4Ti7b'></ul><sub id='4Ti7b'></sub></form><legend id='4Ti7b'></legend><bdo id='4Ti7b'><pre id='4Ti7b'><center id='4Ti7b'></center></pre></bdo></b><th id='4Ti7b'></th></span></q></dt></tr></i><div id='4Ti7b'><tfoot id='4Ti7b'></tfoot><dl id='4Ti7b'><fieldset id='4Ti7b'></fieldset></dl></div>

      1. 编译器优化:Java 字节码

        Compiler optimization: Java bytecode(编译器优化:Java 字节码)
      2. <legend id='QfrwP'><style id='QfrwP'><dir id='QfrwP'><q id='QfrwP'></q></dir></style></legend>
          <tbody id='QfrwP'></tbody>

        <small id='QfrwP'></small><noframes id='QfrwP'>

      3. <tfoot id='QfrwP'></tfoot>
              <i id='QfrwP'><tr id='QfrwP'><dt id='QfrwP'><q id='QfrwP'><span id='QfrwP'><b id='QfrwP'><form id='QfrwP'><ins id='QfrwP'></ins><ul id='QfrwP'></ul><sub id='QfrwP'></sub></form><legend id='QfrwP'></legend><bdo id='QfrwP'><pre id='QfrwP'><center id='QfrwP'></center></pre></bdo></b><th id='QfrwP'></th></span></q></dt></tr></i><div id='QfrwP'><tfoot id='QfrwP'></tfoot><dl id='QfrwP'><fieldset id='QfrwP'></fieldset></dl></div>
                <bdo id='QfrwP'></bdo><ul id='QfrwP'></ul>

                1. 本文介绍了编译器优化: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 字节码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Compiling C++ for the JVM(为 JVM 编译 C++)
                  Compile to java bytecode (without using Java)(编译成java字节码(不使用Java))
                  How to drive C#, C++ or Java compiler to compute 1+2+3+...+1000 at compile time?(如何在编译时驱动 C#、C++ 或 Java 编译器计算 1+2+3+...+1000?)
                  Java ClassLoader: load same class twice(Java ClassLoader:两次加载相同的类)
                  How to debug .class files in ECLIPSE?(如何在 ECLIPSE 中调试 .class 文件?)
                  Java quot;The blank final field may not have been initializedquot; Anonymous Interface vs Lambda Expression(Java“可能尚未初始化空白的最终字段匿名接口与 Lambda 表达式)
                    <i id='6iXC9'><tr id='6iXC9'><dt id='6iXC9'><q id='6iXC9'><span id='6iXC9'><b id='6iXC9'><form id='6iXC9'><ins id='6iXC9'></ins><ul id='6iXC9'></ul><sub id='6iXC9'></sub></form><legend id='6iXC9'></legend><bdo id='6iXC9'><pre id='6iXC9'><center id='6iXC9'></center></pre></bdo></b><th id='6iXC9'></th></span></q></dt></tr></i><div id='6iXC9'><tfoot id='6iXC9'></tfoot><dl id='6iXC9'><fieldset id='6iXC9'></fieldset></dl></div>
                    <tfoot id='6iXC9'></tfoot>

                    <small id='6iXC9'></small><noframes id='6iXC9'>

                        <tbody id='6iXC9'></tbody>

                          • <bdo id='6iXC9'></bdo><ul id='6iXC9'></ul>
                          • <legend id='6iXC9'><style id='6iXC9'><dir id='6iXC9'><q id='6iXC9'></q></dir></style></legend>