ベンチマークには、3 つの異なる設定 (「すべて保持」、「サイズを保持」、「何も保持しない」) が必要なので、列挙型を使用することもできます。その後、いくつかのケースを複数回実行する必要があることがわかり (ベンチマークはシードされた Random を使用します)、元の列挙型はかなり柔軟性がなくなりました。Caliperの場合、列挙項目を繰り返す必要があります。適切に作成しようとして何度か失敗した後、次のハックなアイデアにたどり着きました。
private enum Randomization {
USE_EXAMPLE_1,
USE_EXAMPLE_2,
KEEP_EXAMPLE_SIZE_1,
RANDOM_1,
RANDOM_2,
RANDOM_3,
;
final boolean keepAll;
final boolean keepSize;
private Randomization() {
keepAll = name().startsWith("U");
keepSize = !name().startsWith("R");
}
}
最小限のオーバーヘッドで実験を追加または削除できます。より良い解決策はありますか?