首页 > 解决方案 > JVM C1 和 C2 编译时间基准

问题描述

我有简单的 hello world 程序,并设置-XX:TieredStopAtLevel=[0 to 4]. 我了解它如何使用解释器或 C1 或 C2 或同时使用 C1 和 C2 来编译代码的基本区别。

如果我使用不同的数字,我想知道真正的基准测试细节以了解编译时间,以及其他细节。

标签: jvmjvm-hotspotjvm-arguments

解决方案


要对 JIT 编译器进行基准测试,请使用-Xcomp强制编译所有已执行的方法,并检查CompilationMXBean.getTotalCompilationTimeJIT 编译所花费的总时间。

例子

import java.lang.management.ManagementFactory;

public class CompilationTime {

    public static void main(String[] args) throws Exception {
        System.out.println(ManagementFactory.getCompilationMXBean().getTotalCompilationTime());
    }
}

C1

$ java -Xcomp -XX:TieredStopAtLevel=1 CompilationTime
162  // milliseconds

C2

$ java -Xcomp -XX:-TieredCompilation CompilationTime
1129  // milliseconds

推荐阅读