gpt4 book ai didi

java - javac 是否根据底层操作系统执行任何字节码级别的优化?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:54:27 25 4
gpt4 key购买 nike

我的理解是,通过调用javac产生的Java字节码是独立于底层操作系统的,但是HotSpot编译器会在程序运行时执行平台特定的JIT优化和编译。

但是,我在 32 位 JDK 下的 Windows 上编译代码并在 32 位 JVM 下的 Solaris 上执行它(这两个操作系统都不是 64 位操作系统)。据我所知(正在努力确认其规范),Solaris x86 机器在所有方面(内核数量、RAM 容量、硬盘延迟、处理器速度等)都应该优于 Windows 机器。但是,相同的代码在 Windows 上的运行速度明显更快(单个数据点在 Windows 上运行 7.5 秒,在 Solaris 上运行 10 秒以上),并且始终如一。我的下一个测试是在 Solaris 上编译并记录性能差异,但这对我来说没有意义,而且我找不到任何 Oracle 文档来解释我所看到的。

给定两个不同操作系统上的 JVM 的相同版本(主要、次要、发布等),对相同源文件调用 javac 会导致 Java 字节码中的不同优化(生成的 .class 文件)?是否有解释此行为的文档?

最佳答案

没有。 javac 没有针对不同平台做任何优化。

参见神谕"tools"页面(描述了javac和其他工具):

Each of the development tools comes in a Microsoft Windows version (Windows) and a Solaris or Linux version. There is virtually no difference in features between versions. However, there are minor differences in configuration and usage to accommodate the special requirements of each operating system. (For example, the way you specify directory separators depends on the OS.)


(也许 Solaris JVM 比 Windows JVM 慢?)

关于java - javac 是否根据底层操作系统执行任何字节码级别的优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7233865/

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