【问题标题】:JVM C1 and C2 Compile Time BenchmarkJVM C1 和 C2 编译时间基准
【发布时间】:2021-03-06 21:18:04
【问题描述】:

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

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

【问题讨论】:

  • 有什么问题?
  • 我想知道使用不同级别的真实基准。你有安德烈的任何细节吗?
  • 我把这个问题读了好几遍,但仍然无法理解,对不起。你能解释一下吗?你想比较C1和C2的编译时间吗?特定 Java 方法的编译,还是任何随机方法?
  • time java -Xcomp -XX:TieredStopAtLevel=N - 一种比较引导类编译时间的简单方法。另见CompilationMXBean.getTotalCompilationTime
  • 您可以使用-XX:+CITime 从不同的编译器获取编译时间

标签: jvm jvm-hotspot jvm-arguments


【解决方案1】:

要对 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

【讨论】:

  • 是的,Andrei,我使用了样本并得到了它。
猜你喜欢
  • 1970-01-01
  • 2020-09-11
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 2012-06-12
  • 2017-11-16
相关资源
最近更新 更多