Optimization GraalVM能否将提前编译与自适应优化结合起来?

Optimization GraalVM能否将提前编译与自适应优化结合起来?,optimization,jvm,jvm-hotspot,aot,graalvm,Optimization,Jvm,Jvm Hotspot,Aot,Graalvm,据我所知,JVM可以以不同的方式工作: 解释器:一次又一次地从字节码到本机代码的运行时转换 即时编译:在需要时,在运行时将部分字节码编译成本机代码。保留汇编。编译的性能开销/代价。引入了在运行时进行自适应优化的可能性,这在静态提前编译中是不可能的 热点:只有频繁执行的部分才能进行JIT编译。其余部分将被解释 现在GraalVM可以将字节码提前编译成本机代码 是否有可能提前编译字节码,并在热点上进行自适应优化(一般情况下,使用GraalVM进行优化) [澄清] 我的意思不是将字节码的一部分AOT编

据我所知,JVM可以以不同的方式工作:

解释器:一次又一次地从字节码到本机代码的运行时转换

即时编译:在需要时,在运行时将部分字节码编译成本机代码。保留汇编。编译的性能开销/代价。引入了在运行时进行自适应优化的可能性,这在静态提前编译中是不可能的

热点:只有频繁执行的部分才能进行JIT编译。其余部分将被解释

现在GraalVM可以将字节码提前编译成本机代码

是否有可能提前编译字节码,并在热点上进行自适应优化(一般情况下,使用GraalVM进行优化)

[澄清] 我的意思不是将字节码的一部分AOT编译为本机代码,而将其他部分作为字节码,以便在运行时对它们执行hotspot JIT编译。这就是IBM的Excelsior Jet Java实现所做的,我到目前为止读到的。 我的意思是AOT编译整个字节码,并在运行时用自适应优化的热点重新编译替换热点部分。这需要将优化代码正确地连接/插入到现有AOT编译代码中。 [/澄清]

我不知道在运行时使用自适应优化重新编译热点需要什么信息。这样做需要字节码吗?这将意味着更高的内存消耗,作为更高性能的成本


我不是这方面的专家,所以如果有任何假设是错误的,请告诉我。

请参阅。它提到了不同的AOT模式,包括分层AOT,它提供了C1编译代码和分析工具,然后可以在运行时使用C2进行优化。

请参阅。它提到了不同的AOT模式,包括分层AOT,它提供C1编译代码和分析工具,然后可以在运行时使用C2进行优化。

我刚刚发现了以下语句:“还存在将AOT(提前)编译器与JIT编译器(Excelsior JET)或解释器相结合的Java实现(用于Java的GNU编译器)。'不幸的是,没有编写任何引用。来源:我刚刚发现以下语句:'还有一些Java实现将AOT(提前)编译器与JIT编译器(Excelsior JET)或解释器(用于Java的GNU编译器)相结合。'不幸的是,没有写任何参考资料。来源:我建议所有对性能优化感兴趣的人都阅读它。我想知道这是否可能超过“C”程序。由于AOT,从“C”类速度开始,由于分析和重新编译而落后,然后由于自适应而在长期内超过ive优化。我建议所有对性能优化感兴趣的人都阅读它。我想这是否可能比“C”程序更出色。由于AOT,从“C”类速度开始,由于分析和重新编译而落后,然后由于自适应优化而在长期内超过。