How can I use to calculate the amount of CPU time and memory in JMH? For example, I have: Code:
@State(Scope.Thread)
@BenchmarkMode(Mode.All)
public class JMHSample_My {
int x = 1;
int y = 2;
@GenerateMicroBenchmark
public int measureAdd() {
return (x + y);
}
@GenerateMicroBenchmark
public int measureMul() {
return (x * y);
}
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(".*" + JMHSample_My.class.getSimpleName() + ".*")
.warmupIterations(5)
.measurementIterations(5)
.forks(1)
.build();
new Runner(opt).run();
}
}
Result:
Benchmark Mode Samples Mean Mean error Units
JMHSample_My.measureAdd thrpt 5 1060579.757 39506.950 ops/ms
JMHSample_My.measureMul thrpt 5 1046872.684 79805.116 ops/ms
JMHSample_My.measureAdd avgt 5 0.000 0.000 ms/op
JMHSample_My.measureMul avgt 5 0.000 0.000 ms/op
JMHSample_My.measureAdd sample 9549793 0.000 0.000 ms/op
JMHSample_My.measureMul sample 9287002 0.000 0.000 ms/op
JMHSample_My.measureAdd ss 5 0.001 0.000 ms
JMHSample_My.measureMul ss 5 0.001 0.000 ms
I can see the number of requests for time, the average time of the test, but do not see the average amount of CPU usage and memory usage. This can be done by means of JMH?
HotspotMemoryProfiler.class
nor theGCProfiler.class
didn't help. The only metric I was getting is theops/sec
– Hydrometallurgysun.gc.generation.0.space.0.used
– Hydrometallurgy