Class BenchmarkGenerator
java.lang.Object
org.openjdk.jmh.generators.core.BenchmarkGenerator
Benchmark generator.
Benchmark generator is the agnostic piece of code which generates
synthetic Java code for JMH benchmarks. GeneratorSource is
used to feed the generator with the required metadata.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Set<BenchmarkInfo> private final CompilerControlPlugin(package private) static String[](package private) static final Objectprotected static final Stringprivate static final Stringprivate static final Stringprivate final BenchmarkGeneratorSession -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddAuxCounters(PrintWriter writer, String resName, StateObjectHandler states, MethodInfo method) private Multimap<ClassInfo, MethodInfo> buildAnnotatedSet(GeneratorSource source) Build a set of Classes which has annotated methods in themvoidcomplete(GeneratorSource source, GeneratorDestination destination) Finish generating the benchmarks.private StringemitCall(MethodInfo method, StateObjectHandler states) voidgenerate(GeneratorSource source, GeneratorDestination destination) Execute the next phase of benchmark generation.private voidgenerateAverageTime(PrintWriter writer, Mode benchmarkKind, MethodGroup methodGroup, StateObjectHandler states) private voidgenerateClass(GeneratorDestination destination, ClassInfo classInfo, BenchmarkInfo info) Create and generate Java code for a class and it's methodsprivate voidgenerateImport(PrintWriter writer) private voidgenerateMethod(Mode benchmarkKind, PrintWriter writer, MethodGroup methodGroup, StateObjectHandler states) Generate the method for a specific benchmark methodprivate voidgenerateSampleTime(PrintWriter writer, Mode benchmarkKind, MethodGroup methodGroup, StateObjectHandler states) private voidgenerateSingleShotTime(PrintWriter writer, Mode benchmarkKind, MethodGroup methodGroup, StateObjectHandler states) private voidgenerateThroughput(PrintWriter writer, Mode benchmarkKind, MethodGroup methodGroup, StateObjectHandler states) private Stringprivate String(package private) static Stringident(int tabs) private voidinvocationEpilog(PrintWriter writer, int prefix, MethodInfo method, StateObjectHandler states, boolean pauseMeasurement) private voidinvocationProlog(PrintWriter writer, int prefix, MethodInfo method, StateObjectHandler states, boolean pauseMeasurement) private voiditerationEpilog(PrintWriter writer, int prefix, MethodInfo method, StateObjectHandler states) private voiditerationProlog(PrintWriter writer, int prefix, MethodInfo method, StateObjectHandler states) private Collection<BenchmarkInfo> makeBenchmarkInfo(ClassInfo clazz, Collection<MethodInfo> methods) Generate BenchmarkInfo for given class.private voidmethodEpilog(PrintWriter writer) private voidmethodProlog(PrintWriter writer) private Stringprivate voidvalidateBenchmark(ClassInfo clazz, Collection<MethodInfo> methods) Do basic benchmark validation.private voidvalidate benchmark info
-
Field Details
-
JMH_STUB_SUFFIX
- See Also:
-
JMH_TESTCLASS_SUFFIX
- See Also:
-
JMH_GENERATED_SUBPACKAGE
- See Also:
-
benchmarkInfos
-
compilerControl
-
processedBenchmarks
-
session
-
INDENTS
-
INDENTS_LOCK
-
-
Constructor Details
-
BenchmarkGenerator
public BenchmarkGenerator()
-
-
Method Details
-
generate
Execute the next phase of benchmark generation. Multiple calls to this method are acceptable, even with the difference sources- Parameters:
source- generator source to get the metadata fromdestination- generator destination to write the results to
-
complete
Finish generating the benchmarks. Must be called at the end of generation.- Parameters:
source- source generator to usedestination- generator destination to write the results to
-
buildAnnotatedSet
Build a set of Classes which has annotated methods in them- Returns:
- for all methods annotated with $annotation, returns Mapinvalid input: '<'holder-class, Set
>
-
validateBenchmark
Do basic benchmark validation. -
validateBenchmarkInfo
validate benchmark info- Parameters:
info- benchmark info to validate
-
makeBenchmarkInfo
private Collection<BenchmarkInfo> makeBenchmarkInfo(ClassInfo clazz, Collection<MethodInfo> methods) Generate BenchmarkInfo for given class. We will figure out method groups at this point.- Parameters:
clazz- holder classmethods- annotated methods- Returns:
- BenchmarkInfo
-
generateClass
private void generateClass(GeneratorDestination destination, ClassInfo classInfo, BenchmarkInfo info) throws IOException Create and generate Java code for a class and it's methods- Throws:
IOException
-
generateImport
-
generateMethod
private void generateMethod(Mode benchmarkKind, PrintWriter writer, MethodGroup methodGroup, StateObjectHandler states) Generate the method for a specific benchmark method -
generateThroughput
private void generateThroughput(PrintWriter writer, Mode benchmarkKind, MethodGroup methodGroup, StateObjectHandler states) -
addAuxCounters
private void addAuxCounters(PrintWriter writer, String resName, StateObjectHandler states, MethodInfo method) -
generateAverageTime
private void generateAverageTime(PrintWriter writer, Mode benchmarkKind, MethodGroup methodGroup, StateObjectHandler states) -
getStubArgs
-
getStubTypeArgs
-
methodProlog
-
methodEpilog
-
prefix
-
generateSampleTime
private void generateSampleTime(PrintWriter writer, Mode benchmarkKind, MethodGroup methodGroup, StateObjectHandler states) -
generateSingleShotTime
private void generateSingleShotTime(PrintWriter writer, Mode benchmarkKind, MethodGroup methodGroup, StateObjectHandler states) -
invocationProlog
private void invocationProlog(PrintWriter writer, int prefix, MethodInfo method, StateObjectHandler states, boolean pauseMeasurement) -
invocationEpilog
private void invocationEpilog(PrintWriter writer, int prefix, MethodInfo method, StateObjectHandler states, boolean pauseMeasurement) -
iterationProlog
private void iterationProlog(PrintWriter writer, int prefix, MethodInfo method, StateObjectHandler states) -
iterationEpilog
private void iterationEpilog(PrintWriter writer, int prefix, MethodInfo method, StateObjectHandler states) -
emitCall
-
ident
-