JVM C1 和 C2 编译时间基准
JVM C1 and C2 Compile Time Benchmark
我有简单的 hello world 程序,并设置 -XX:TieredStopAtLevel=[0 to 4]
。我了解它如何使用解释器或 C1 或 C2 或同时使用 C1 和 C2 来编译代码的基本区别。
我想知道真正的基准细节以了解编译时间,如果我使用不同的数字,我想知道其他细节。
要对 JIT 编译器进行基准测试,请使用 -Xcomp
强制编译所有已执行的方法,并检查 CompilationMXBean.getTotalCompilationTime
以查找 JIT 编译所花费的总时间。
例子
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
我有简单的 hello world 程序,并设置 -XX:TieredStopAtLevel=[0 to 4]
。我了解它如何使用解释器或 C1 或 C2 或同时使用 C1 和 C2 来编译代码的基本区别。
我想知道真正的基准细节以了解编译时间,如果我使用不同的数字,我想知道其他细节。
要对 JIT 编译器进行基准测试,请使用 -Xcomp
强制编译所有已执行的方法,并检查 CompilationMXBean.getTotalCompilationTime
以查找 JIT 编译所花费的总时间。
例子
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