【问题标题】:How to specify the command line when using Caliper?使用 Caliper 时如何指定命令行?
【发布时间】:2011-05-17 17:10:27
【问题描述】:

我发现 Google 的微型基准测试项目 Caliper 非常有趣,但文档仍然(除了一些示例)完全不存在。

我有两种不同的情况需要影响 JVM Caliper 启动的命令行:

  1. 我需要设置一些固定(最好在几个固定值之间交替)-D 参数
  2. 我需要指定一些固定的(最好在几个固定值之间交替)JVM 参数

我看到了一些关于添加此类功能的讨论,但我无法确定是否添加了它,在这种情况下,语法会变成什么?

一些示例或指向 Java 文档的指针(假设这完全记录在某处)等将不胜感激!

【问题讨论】:

    标签: java benchmarking microbenchmark caliper


    【解决方案1】:

    要使用命令行参数修复基准参数,请使用-Dname=value。有一个特殊的参数名为benchmark;它的值是您的 time 方法的后缀。如果您想将一个参数限制为多个值,请用逗号分隔它们,如下所示:-Dname=value1,value2

    要设置 JVM 参数,请使用-Jname=flag1,flag2

    例如考虑这个基准:

    public class StringBuilderBenchmark extends SimpleBenchmark {
    
        @Param({"1", "10", "100"}) private int length;
    
        public void timeAppendBoolean(int reps) {
            for (int i = 0; i < reps; ++i) {
                StringBuilder sb = new StringBuilder();
                for (int j = 0; j < length; ++j) {
                    sb.append(true);
                }
            }
        }
    
        public void timeAppendChar(int reps) {
            for (int i = 0; i < reps; ++i) {
                StringBuilder sb = new StringBuilder();
                for (int j = 0; j < length; ++j) {
                    sb.append('c');
                }
            }
        }
    }
    

    要运行长度为 5 和 6 以及大小堆的基准测试,请使用以下参数:

    java -cp caliper-0.0.jar:build/classes/test \
        com.google.caliper.Runner examples.StringBuilderBenchmark \
        -Dlength=5,6 -Dbenchmark=AppendBoolean -Jmemory=-Xmx512M,-Xmx16M
    

    这会产生以下结果:

     0% Scenario{vm=java, trial=0, benchmark=AppendBoolean, length=5, memory=-Xmx512M} 81.79 ns; σ=0.31 ns @ 3 trials
    25% Scenario{vm=java, trial=0, benchmark=AppendBoolean, length=6, memory=-Xmx512M} 89.72 ns; σ=2.19 ns @ 10 trials
    50% Scenario{vm=java, trial=0, benchmark=AppendBoolean, length=5, memory=-Xmx16M} 111.44 ns; σ=6.01 ns @ 10 trials
    75% Scenario{vm=java, trial=0, benchmark=AppendBoolean, length=6, memory=-Xmx16M} 120.23 ns; σ=4.59 ns @ 10 trials
    
      memory length    ns logarithmic runtime
    -Xmx512M      5  81.8 =
    -Xmx512M      6  89.7 =======
     -Xmx16M      5 111.4 ========================
     -Xmx16M      6 120.2 =============================
    
    vm: java
    trial: 0
    benchmark: AppendBoolean
    

    【讨论】:

    • 非常感谢我需要的信息!
    • com.google.caliper.Runner 在 1.0beta1 中不再存在,您需要实现自己的 main 似乎:public static void main(String[] args) { CaliperMain.main(MyBenchmark.class, args); } NB:beta-1 将 不适用于 windows.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多