gpt4 book ai didi

java - 使用最新 java 版本重新编译旧 java 项目的性能优势

转载 作者:搜寻专家 更新时间:2023-11-01 02:35:08 27 4
gpt4 key购买 nike

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

<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

所以,我想知道不同编译器(基准测试)之间是否存在很大差异,最好能有一个编译阶段发生的所有优化的完整列表

最佳答案

不,javac 编译器没有做太多优化,因为 JIT 负责运行时的大部分优化,所以您会得到完全相同的字节码。除了类文件将被标记为 Java 11,因此您将无法在较低版本上运行它。

Java 是向后兼容的,因此在较新版本上运行 Java 8 字节码没什么特别的。

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

作为约翰内斯的 video表明总是有兴趣针对内存和速度优化字符串,因为它们是 Java 项目中最常用的对象。然而,它仍然是一个微基准测试,大部分差异来自使用 Java 11 编译和运行的代码与使用 Java 8 编译和运行的代码。

我试图找到可以解决重新编译 问题的资源,但快速浏览找不到任何内容。因此,除非有证据表明非微基准测试会从重新编译到 Java 11 字节码中受益(现实的,而不是理论上的),否则我会将其归类为“Performance Voodoo”。

关于java - 使用最新 java 版本重新编译旧 java 项目的性能优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58286884/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com