【发布时间】:2019-12-26 12:41:16
【问题描述】:
我正在考虑使用 GraalVM 原生映像编译我的 Java 应用程序,但我看到的所有文档都提到了缩短启动时间,但没有提到整体应用程序性能的改进?
那么我可以通过这样做真正期待什么?
【问题讨论】:
我正在考虑使用 GraalVM 原生映像编译我的 Java 应用程序,但我看到的所有文档都提到了缩短启动时间,但没有提到整体应用程序性能的改进?
那么我可以通过这样做真正期待什么?
【问题讨论】:
一般来说,性能下降。我报告了原生图像some time ago to the GraalVM team 的性能下降。性能下降的严重程度可能因用例而异。在我有written and used for my analysis 的基准测试中(代码的更新版本可以在here 找到),开销从“几乎不明显”到“慢5 倍”不等。我也在我的talk at JCON 2019 (#shamelessSelfPromotion) 中简短地提到了这一点。
GraalVM 团队提供了一张漂亮的幻灯片,说明了在哪个用例中使用什么技术: (图片取自tweet by Thomas Würthinger)
对于感兴趣的读者:正如Andrew mentioned on github,性能不佳的一个主要因素是不存在 JIT 编译:JIT 编译器可以消除不常用的分支,从而显着加快速度表现。这对于本地编译的代码显然是不可能的。
旁注:当我们讨论性能时,您可以执行由 clang 发出的位码(即在 GraalVM 上执行 C/C++ 程序),但不要期望“良好”的性能。 . ?
【讨论】: