首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JMH度量迭代

JMH度量迭代
EN

Stack Overflow用户
提问于 2016-04-04 19:07:18
回答 4查看 5.9K关注 0票数 7

我正在使用JMH,我发现了一些难以理解的东西:我有一个用@Benchmark注释的方法,并且我设置了measurementIterations(3)。该方法被调用了3次,但在每次迭代调用中,该函数都会运行相当大且随机的次数。

我的问题是:这个数字是完全随机的吗?有没有办法控制它,并确定函数在一次迭代中应该运行多少次?如果函数会随机运行一次,那么设置measurementIterations有什么意义呢?

EN

回答 4

Stack Overflow用户

发布于 2016-04-05 16:51:19

measurementIterations定义了您想要测量基准测试的多少次度量迭代。我不知道您指定了哪些参数,但在默认情况下,JMH按时间运行基准测试(默认情况下,我猜是1秒)。这意味着在该时间范围内尽可能频繁地调用基准测试方法。可以指定在一次迭代中调用该方法的频率(->批处理)。

我建议研究JMH:http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/提供的JMH示例,它们是对JMH的一个非常好的介绍,并涵盖了您在基准测试中容易犯下的陷阱。

票数 8
EN

Stack Overflow用户

发布于 2016-09-15 21:49:02

迭代的次数取决于不同的JMH模式,我想你一定是使用了模式,它会执行各种迭代。/////////////////////////////////////////////////////////////////////////////////

代码语言:javascript
运行
复制
Mode.Throughput:    Calculate number of operations in a time unit.

Mode.AverageTime:   Calculate an average running time.

Mode.SampleTime:    Calculate how long does it take for a method to run
(including percentiles). 

Mode.SingleShotTime:    Just runs a method
once (useful for cold-testing mode).

////////////////////////////////////////////////////////////////////////////////

例如,使用模式"Mode.SingleShotTime",它将精确地执行您在运行中提到的迭代次数(见下文)。 //示例

代码语言:javascript
运行
复制
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
                .include(JMHSample_01_HelloWorld.class.getSimpleName())
                .warmupIterations(1)// number of times the warmup iteration should take place
                .measurementIterations(1)//number of times the actual iteration should take place
                .forks(1)
                .shouldDoGC(true) 
                .build();


        new Runner(opt).run(); 
}
票数 3
EN

Stack Overflow用户

发布于 2016-04-05 16:57:00

JMH正在进行热身迭代,这些迭代不是测量到的,但对于有效的结果是必要的。

measurementIterations定义了应该测量的迭代次数。这不包括预热,因为预热是不测量的。

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

https://stackoverflow.com/questions/36400947

复制
相关文章

相似问题

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