2010-11-30 28 views
3

GoogleのマイクロベンチマークプロジェクトのCaliperは非常に興味深いですが、ドキュメントはまだ存在しません(いくつかの例を除いて)。Caliperを使用する場合のコマンドラインの指定方法は?

私はJVMのキャリパーのコマンドラインに影響を与える必要がある2つの異なるケースがありますが開始:

  1. 私は(理想的には、いくつかの固定値の間で交互に)固定いくつかの-Dパラメータ
  2. を設定する必要があります私は何を私はこのような機能を追加する方法についていくつかの議論を見たが、それが追加されているかどう私は結論付けていない可能性があり、その場合にはJVMが

パラメータ(理想的には、いくつかの固定値の間で交互に)いくつかの固定を指定する必要があります構文は?

Javaのdocへのいくつかの例やポインタ(これはすべて、どこかに書かれていると仮定します)などは非常に高く評価されます!

答えて

6

ベンチマークパラメータをコマンドライン引数で修正するには、-Dname=valueを使用します。 benchmarkという特別なパラメータが1つあります。その値は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 
+0

ありがとうございました。 – Javafanboy

+1

com.google.caliper.Runnerは1.0beta1には存在しなくなりました。あなた自身のmainを実装する必要があります: 'public static void main(String [] args){CaliperMain.main(MyBenchmark.class、args); } '注意:ベータ1はWindows *では動作しません。 – eckes

関連する問題