我创建了一个课程。在该课程中,我有几种标记为@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();
我的兴趣是拥有一个只运行一个的设置方法 “new Runner(opt).run();”在调用所有@Benchmark方法之前(以及它们的迭代)。同样,在所有方法运行之后和返回main之前,只有一次运行的拆卸方法。
当我尝试@setup和@tear down(Level.Trial / Iteration / Invocation)时,这些方法运行了几次,而不仅仅是我希望的那些。 JMH中是否有一种方法可以对方法进行注释,以便它在“运行”之后和运行结束之前立即运行?
谢谢!
答案 0 :(得分:4)
你遗漏了一些东西:
如果你绝对需要一些套装&#39;级别上下文您必须从VM构建它(例如,某些文件在基准设置上读取/在拆卸时更新等。)