gpt4 book ai didi

java - 使用向后兼容性编译的 java 类是否使用更新版本的 JavaVM 优化?

转载 作者:行者123 更新时间:2023-11-29 07:57:57 26 4
gpt4 key购买 nike

我想知道,在编译为 java 1.4 编写的 java 源代码时,-source 和 -target 开关设置为 1.4,是否会使用中间版本中内置的一些/任何优化。我的第一个意图是说当然不是,因为在编译之后你会得到一组以原始 1.4 VM 为目标的指令。然后我认为由于编译器只是更智能地使用指令,所以应该还有一些改进。

或者换句话说,大多数优化是在运行代码或编译类的 VM 中进行的吗?

请保存评论,因为 1.4 已无可救药地过时了,这个问题只是我想了两天的问题,在互联网上搜索并没有为我提供该问题的任何合理好的答案。

最佳答案

javac 编译器优化代码是一种常见的误解。它在 99% 的情况下不会,并且主要生成您作为字节代码编写的内容的字面翻译。

所有优化都在运行时的 JIT 中进行。这意味着为 JDK 1.0 编译的代码将在最新的处理器上运行,与符合 Java 7 或 8 最新更新的相同代码一样有效。

注意:编译器在计算编译时已知的常量时会进行少量优化。例如1+1 => 2 和 "hello "+ "world" => "hello world"。多年来,这些优化并没有太大变化,它们存在于 Java 1.2 中,可能更早。

compiling you get a set of instructions that have as target the original 1.4 VM

从Java 1.0开始,Java 7只增加了一条字节码指令,Java没有使用它。添加它是为了支持在 JVM 上运行的动态语言。

do the most optimizations sit in the VM that runs the code or the compiled classes

你可以假设它确实如此。 Java 1.0 - 1.4 将使用 StringBuffer 进行字符串连接,而 Java 5.0+ 将使用稍微优化的 StringBuilder。差异很小(但可以测量)

Please save the comments with 1.4 being hopelessly outdated,

Java 6 已经过时了,而 Java 8 将使 Java 7 看起来非常过时(当它最终在今年某个时候出现时)

关于java - 使用向后兼容性编译的 java 类是否使用更新版本的 JavaVM 优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16231963/

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