如何使用JMH计算CPU时间和内存量? 例如,我有: 代码:
@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();
}
}
结果:
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
我可以看到时间请求的数量,即测试的平均时间,但是没有看到平均CPU使用量和内存使用量。这可以通过JMH来完成吗?
答案 0 :(得分:7)
对于内存使用情况,您可以在构建转轮选项时使用GC
方法添加HS_GC
或addProfiler
个分析器。
对于CPU使用率,基准测试通常会自然消耗100%的可用CPU。但是,您应该检查其他可用的配置文件,看看它们是否会产生对您有用的信息。