GraalVM本机映像会提高整体应用程序性能还是仅减少启动时间?

时间:2019-12-26 12:41:16

标签: java graalvm

我正在考虑使用GraalVM本机映像编译Java应用程序,但是我看到的所有文档都涉及减少启动时间,但没有提及整体应用程序性能的改善吗?

那么我能从现实中期待什么?

1 个答案:

答案 0 :(得分:6)

通常,性能会下降。我已经报告了本地映像some time ago to the GraalVM team的性能下降。性能降低的严重性可能会因使用案例而异。在基准测试中,我有written and used for my analysis(可以找到here的代码更新版本),开销从“几乎不明显”到“慢5倍”不等。我在talk at the JCON 2019(#shamelessSelfPromotion)中也提到了这一点。

GraalVM团队提供了一张不错的幻灯片,其中说明了针对哪种用例使用哪种技术: As tweeted by @thomaswue (图像取自tweet by Thomas Würthinger

对于感兴趣的读者:与Andrew mentioned on github一样,糟糕的性能的一个主要因素是不存在JIT编译:JIT编译器可以(除其他外)消除很少使用的分支,从而显着减少加快性能。对于本地编译的代码,这显然是不可能的。

侧面说明:在性能方面,您可以执行clang发出的位代码(即在GraalVM上执行C / C++程序),但是不要指望“良好”的性能完全...?