当前位置: 首页 > 面试题库 >

通过Java编译器进行优化

秦奇
2023-03-14
问题内容

Java编译器(即javac)在生成字节码时不会执行任何优化。是真的吗 如果是这样,那么它可以实现为中间代码生成器以消除冗余并生成最佳代码吗?


问题答案:

javac 如果有的话,只会做很少的优化。

关键是JIT编译器完成了大部分优化工作-如果它具有很多信息,则效果最佳,如果javac执行优化,其中的一些信息也可能会丢失。如果javac执行某种形式的循环展开,那么JIT很难以一般的方式自行完成-而且,由于它了解目标平台,因此它具有有关哪些优化将实际起作用的更多信息。



 类似资料:
  • Maven编译器插件的编译目标表明(正如你们许多人已经知道的),我可以通过设置< code >来关闭调试信息 但是,我注意到同一文档指出该设置的“用户属性”是< code > maven . compiler . debug 。某物是“用户财产”是什么意思?这是否意味着我可以在我的配置文件中简单地将< code > maven . compiler . debug 属性设置为< code>fals

  • 问题内容: 我目前正在翻译中编写一个针对Java字节码的玩具编译器。 我想知道是否可以在编写.class文件之前在发出的字节码中进行各种简单的窥孔优化的目录,也许是摘要。我实际上知道一些具有此功能的库,但是我想自己实现。 问题答案: 您知道Proguard吗?http://proguard.sourceforge.net/ 这是一个很棒的字节码优化器,它实现了很多优化。请参阅常见问题解答以获取列表

  • (这个问题与此密切相关,但它是一个更具体的问题,我希望能就此得到答案)

  • 不久前有人问了一个有趣的问题: 我决定证明使用Java8流API(确切地说是并行流)是可能的。以下是我的代码,它在非常罕见的情况下工作: 然后我想,也许是因为潜在的JIT编译器优化?因此,我尝试使用以下VM选项运行代码: 我禁用了JIT,成功案例的数量显著增加! 即时编译器如何优化并行流,以便优化可能会影响上述代码的执行?

  • 问题内容: 我正在尝试反编译 Java项目(.jar)文件,并且能够从其中获取.java文件。现在如何将其编译回来?我可以将.java文件作为单个文件添加到Netbeans。但是如何将其作为项目添加并编译呢?该项目是JavaFX项目。所以请帮我。 问题答案: 有很多方法可以实现此目的,但是我认为您不能像这样直接在框内(在本例中为开箱)将项目导入jar中。 我们可以使用最基本的技术(我承认有点脏),