【发布时间】:2021-11-01 10:41:08
【问题描述】:
为了获得 GraalVM 提供的性能优势,必须使用 GraalVM 的编译器编译应用程序。但是,我不清楚应用程序是否也必须由 GraalVM 执行,或者是否可以将其部署到“常规”VM(例如 OpenJDK)以从改进的性能中受益?
一些可能相关的额外细节
- 我使用的是 JDK 11
- 有问题的应用程序仅使用 JDK 语言,例如Java、Kotlin、Groovy
- 构建工件是一个 JAR 文件,即 GraalVM 原生映像未使用
【问题讨论】:
-
如果您不使用 GraalVM Native Image,那么您不会从更好的性能中受益。执行字节码的性能直接关系到执行字节码的VM。
-
@McPringle 我不认为你是正确的,编译器本身肯定也会影响性能吗?请参阅 GraalVM 文档 graalvm.org/why-graalvm 的“更快地运行 Java”部分
-
@Antionio Dragos:您有两种可能使用 GraalVM 更快地运行 Java 程序:首先,将其编译为本机代码(Graal Native Image)。其次,将 GraalVM 用作 VM。但是,如果您使用非 Graal-VM 运行 Java 字节码,它不会运行得更快。您提到的网站上也有说明。 :-)
-
@McPringle 那么是不是为了从 GraalVM 中受益,代码必须由 GraalVM 编译和执行?
-
如果你编译成字节码,是的。如果你编译为本机代码,没有。