jmh( http://openjdk.java.net/projects/code-tools/jmh/ ) を使用して、いくつかのメソッドのベンチマークを行います。また、このメソッドを実行するための引数として使用するパラメーターのセットもあります。特定のパラメーター値ごとにメソッドを生成することは可能ですか (@GenerateMicroBenchmark アノテーションを使用)?
今、私は同様の実装を使用していますが、手作業で多くの統一されたコードを書かなければならないため、あまり便利ではありません:
interface State {
int action();
void prepare();
}
class Method {
...;
toString() { return "State1_" + param; }
}
{
Method[] states;
curState = -1;
count = 0;
int[] params = {1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000};
for (int param: params) {
states[count++] = new Method(param);
}
}
@Setup(Level.Invocation)
public void prepareState() {
if (curState != -1) {
states[curState].prepare();
}
}
@GenerateMicroBenchmark
public int param_1000() {
curState = 0;
return states[curState].action();
}
@GenerateMicroBenchmark
public int param_2000() {
curState = 1;
return states[curState].action();
}
@GenerateMicroBenchmark
public int param_3000() {
curState = 2;
return states[curState].action();
}
...
@GenerateMicroBenchmark
public int param_12000() {
curState = 11;
return states[curState].action();
}