jmh - OpenJDK JMH - 在测量中使用 @Params 意味着什么?
问题描述
我是 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注释有什么区别?
提前致谢
詹姆士
解决方案
如JMH 示例中所述,@Params
注释使您能够通过基准测试尝试不同的配置。@Measurement
注释使您能够为基准设置基于测量的设置。例如,您可以设置每个分叉中的迭代次数,或者您可以使用@Measurement
注释设置基准的时间单位。基准的计算次数计算为forkNumber * measurementIterations * numberOfParams
。我希望它有帮助!
推荐阅读
- mysql - 加入两个表,按列分组并获取所有列
- javascript - 如何在 Ajax 发布成功之前保持 Html 元素隐藏
- python - 字符串替换为条件
- r - 多次应用叉积(kronecker)
- javascript - 如何在没有 webpack 或类似的浏览器中从 typescript 调用 JS 函数?
- c++ - 在 qt 中编译时出现“未定义的引用”错误
- sql - 在表中创建条目的单向配对(例如,运动队)
- javascript - 从 React 15.6.2 更新到 16 Breaks Web 应用程序
- node-red - 为节点红色格式化图表数据
- php - 在查询中进行另一个查询时仅显示一行