首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问JMH状态

访问JMH状态
EN

Stack Overflow用户
提问于 2019-10-14 10:54:26
回答 1查看 981关注 0票数 2

我正在为我的应用程序设置JMH基准测试,我想知道通过benchmark传递JMH状态和从benchmark主体访问JMH状态有什么区别吗?

换句话说

代码语言:javascript
复制
@Benchmark
public int myBenchmark(MyState state) {
MyObject objFromState= state.objFromState;
return objFromState.benchmarkMe();
}

VS

代码语言:javascript
复制
@Benchmark
public int myBenchmark() {
return objFromState.benchmarkMe();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-29 21:20:22

来自官方JMH样本

..。由于JMH被大量用于构建并发基准测试,所以我们选择了显式的状态对象概念。基准测试方法可以引用状态,JMH将在调用这些方法时向注入适当的状态。

我看到的所有示例总是以与代码段相同的方式引用状态:

代码语言:javascript
复制
  @State(Scope.Thread)
  public static class ThreadState {
      volatile double x = Math.PI;
  }

  @Benchmark
  public void measureUnshared(ThreadState state) {
    state.x++;
  }

您必须指定状态的范围,使用注释显式声明它--通过这样做“注册”它。将状态对象进一步注入到引用它的方法(通过将依赖项声明为方法参数)。在您的第二个片段中,您引用了state对象-是的,但这不是一个共享状态。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58375292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档