2016-09-08 7 views
1

下記のjmh-testを検討してください。その引数の幅広いための機能fgベンチマークするための最良の方法だろう何jmhベンチマークから状態を変更する際のベストプラクティス

@State(Scope.Thread) 
public class Test { 
    private int value; 

    @Benchmark 
    public int testF() { 
     return f(value); 
    } 

    @Benchmark 
    public int testG() { 
     return g(value); 
    } 
} 

@Paramは少数の異なる入力に対してのみ機能し、@Setup(Level.Invocation)は結果の精度に影響を与える可能性があります。他の方法(入力配列を生成してベンチマーク内でインデックスを増やすなど)は、ベンチマーク方法から状態を変えることにつながります。

private int[] values; 
private int index; 

@Setup 
private void generateValues() { 
    values = new int[0x10000]; 
    ... 

    index = 0; 
} 

private int nextValue() { 
    return values[index++ & 0xFFFF]; 
} 

@Benchmark 
private int testF() { 
    return f(nextValue()); 
} 

状態をベンチマーク方法から変更することは一般的には悪い考えですか?

答えて

1

OptionsBuilderを使用すると、OptionsBuilder::params(String, String[])でプログラムでオプションを設定できます。オプションビルダーもdemonstrated in the examplesです。

関連する問題