我在我的项目中使用JMH基准测试.我有方法1和方法2用@Benchmark注释.我想要的顺序是:method1,method2,mehod1,method2 ......等等......这意味着:我的魔杖那个方法2会立即跟随方法1.有没有办法这样做?
谢谢!
我正在使用JMH,但发现有些难以理解的地方:我有一种方法带有注释,@Benchmark并且设置了measurementIterations(3)。该方法被调用3次,但是在每次迭代调用中,函数都会运行相当大且随机的次数。
我的问题是:这个数字是完全随机的吗?有没有一种方法可以控制它并确定该函数应在一次迭代中运行多少次?设置measurementIterations每种功能随机运行几次的重要性是什么?
我创建了一个类。在那个类中,我有几个方法被标记为@Benchmark. 我还有一个运行 JMH 基准测试的主要方法:
System.out.println("NUMBER OF THREADS: "+numOfThreads);
Options opt = new OptionsBuilder()
.include(JMHtopToBottom.class.getSimpleName())
.warmupIterations(5)
.measurementIterations(3)
.forks(numOfThreads)
.build();
Collection<RunResult> collection = new Runner(opt).run();
Run Code Online (Sandbox Code Playgroud)
我的兴趣是:
只运行一个的设置方法-new Runner(opt).run();在所有@Benchmark方法被调用之后和之前(以及它们的迭代)。
同样,有一个拆卸方法,在所有方法运行之后和我们回到主之前只运行一次。
当我试图@setup和@tear_down(与Level支持:Trial/ Iteration/ Invocation)的方法运行几次,不仅是我希望的。JMH 中是否有一种方法可以注释方法,以便它只运行方法 - 在结束之后run()和之前run()?