首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用最新的java版本重新编译旧java项目的性能好处

用最新的java版本重新编译旧java项目的性能好处
EN

Stack Overflow用户
提问于 2019-10-08 13:01:16
回答 1查看 476关注 0票数 4

如果一个新的(java 11)目标版本将在java 11上运行,而源代码将保持不变(java 8),那么从性能角度重新编译一个项目是否有意义?

代码语言:javascript
复制
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
      <source>11</source>
      <target>11</target>
    </configuration>
  </plugin>

在较新的JVM上运行java 8字节码有哪些缺陷?

更新:

代码优化器是编译阶段的一个阶段,其中:

  • 它帮助您在执行速度和编译速度之间进行权衡。
  • 改进目标程序的运行时间。
  • 生成仍处于中间表示形式的流线型代码。
  • 删除不可访问的代码并清除未使用的变量
  • 从循环中删除未更改的语句

阅读更多:https://www.guru99.com/compiler-design-phases-of-compiler.html

因此,我想知道不同编译器(基准测试)之间是否存在很大的差异,最好在编译阶段列出所有优化的完整列表。

EN

回答 1

Stack Overflow用户

发布于 2019-10-08 13:03:51

不,javac编译器不会进行太多的优化,因为JIT负责运行时的大多数优化,所以您将得到非常相同的字节码。但是,类文件将被标记为Java 11,因此您将无法在较低版本上运行它。

Java是向后兼容的,所以在新版本上运行Java 8字节码没有什么特别之处。

当然,在较新的JVM上运行Java 8字节码可以在JIT中使用(可能的)改进的动态优化,因此您更有可能只使用后面的JVM就可以获得更好的性能,而无需进行任何额外的编译。

正如Johannes的视频所显示的,为了内存和速度优化String总是很有兴趣的,因为它们是Java中最常用的对象。然而,它仍然是一个微基准,大多数差异来自于用Java 11编译和运行的代码,而不是用Java 8编译和运行的代码。

我试图找到可以访问recompilation,的消息来源,但很快就找不到任何东西。因此,在有证据表明非微基准将从重新编译到Java11字节码(从实际到理论)受益之前,我将其归类为“性能伏都教”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58286884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档