我是JMH的新手,我想了解在基准测试期间如何应用 @Params 。这是我正在使用的代码:
public class BenchmarkMapper
{
@State (Scope.Benchmark)
public static class ExecutionPlan
{
public Source source;
public Mapper mapper;
@Param (
{ "100", "1000", "10000", "100000", "1000000" })
public int iterations;
@Setup (Level.Invocation)
public void setUp()
{
this.source = BenchmarkUtils.createSource();
this.mapper = new Mapper();
}
}
@Benchmark
public Map<Integer, Object> testMap(ExecutionPlan plan)
{
Map<Integer, Object> resultMap = new HashMap<>();
for (int index = plan.iterations; index > 0; index--)
{
resultMap.put(index, plan.mapper.map(plan.source));
}
return resultMap;
}
}
运行它后,我看到正在应用这些参数迭代:
那么,当我使用这些 @Params 时,基准测试会受到什么影响?使用 @Params 或 @Measurements 注释有什么区别?
预先感谢
詹姆斯
答案 0 :(得分:1)
如JMH examples中所述,<div class="container">
<div class="box" style="width: 40%;">
<div class="one" style="width: 100%;">
1
</div>
<div class="six" style="width: 100%;">
6
</div>
</div>
<div class="box two">
2
</div>
<div class="box three">
3
</div>
<div class="box four">
4
</div>
<div class="box five">
5
</div>
</div>
注释使您可以通过基准测试尝试不同的配置。 @Params
注释使您可以为基准设置基于测量的设置。例如,您可以在每个fork中设置迭代次数,也可以使用@Measurement
注释设置基准的时间单位。基准测试的计算次数计算为@Measurement
。希望对您有所帮助!