jmh 基准测试方法在设置方法运行时未运行

问题描述 投票:0回答:1

我正在尝试在一个年级项目中运行 jmh 基准测试。

./gradlew :sub-project:jmh

我可以看到设置方法从标准输出执行了两次。但这两个@Benchmark方法似乎没有被执行。 jmh 报告文件 (.../build/reports/jmh/results/index.html) 也是空的。

这是简化的代码片段。

@Fork(1)
@State(Scope.Benchmark)
@Warmup(iterations = 3)
@Measurement(iterations = 5)
@BenchmarkMode(Mode.SingleShotTime)
public class MyBenchmark {

  @Setup
  public void setupBenchmark() {
    System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
    // ...
  }

  @TearDown
  public void tearDownBenchmark() throws IOException {}

  @Benchmark
  @Threads(1)
  public void testFoo(Blackhole blackhole) {
    System.out.println("foooooooooooooooooooooooo");
    blackhole.consume(1);
  }

  @Benchmark
  @Threads(1)
  public void testRealBenchmark(Blackhole blackhole) {
    System.out.println("==============================");
    // ...
    blackhole.consume(results);
  }
}

期望使用 stdout 和 jmh 报告执行两个 @Benchmark 方法。

Gradle 设置应该没问题,因为其他 jmh 为其他子项目运行。 @Setup方法也是基于stdout执行的。

java benchmarking jmh
1个回答
0
投票

事实证明这是一个错误。安装方法无提示地失败,并且等级运行的标准输出中未显示异常。这就是基准测试方法没有执行的原因。

© www.soinside.com 2019 - 2024. All rights reserved.