首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择jmh配置参数

如何选择jmh配置参数
EN

Stack Overflow用户
提问于 2017-05-03 14:54:25
回答 2查看 985关注 0票数 4

我想使用jmh编写性能测试来度量应用程序代码的某些部分。我读过jmh样品关于如何编写测试的文章,并在youtube上观看了一些关于jmh和性能测试的讲座。

我不明白的是如何为@Warmup@Measurement@Fork值选择正确的值。在大多数示例中,它是1叉,10次迭代,持续1秒。

我明白,配置没有灵丹妙药,但是在选择应该放置哪些值时,我的思维过程应该是什么呢?

EN

回答 2

Stack Overflow用户

发布于 2017-05-04 10:33:02

我不知道是否有人能推荐你可能需要的最接近的参数--甚至是那些编写这个工具的人。这对于您正在测试的用例、OS、JVM等非常具体。

我个人用不同的参数做了几次,每次捕获结果,这样我就可以分析它。您有一些错误+/- (至少平均时间)字段,这是我的第一个指示。如果它太大(这是您决定的),我通常会增加@Warmup@Measurement;这不是金科玉律,但这是我所做的。下面是我使用的一个示例:

代码语言:javascript
复制
 @BenchmarkMode(Mode.AverageTime)
 @OutputTimeUnit(TimeUnit.NANOSECONDS)
 @Warmup(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS)
 @Measurement(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS)
 @State(Scope.Thread)

我可能会一点一点地增加iterationstime,看看以前的运行是否接近恒定的结果。

我通常在相同的热身下运行所有的基准,这样结果就不会有偏见。

这里要做的是,你可能会得到好的或坏的结果,或者慢而快--但这只是输出,而不是原因。理解原因,在perfasmxperfasm下运行perfasmxperfasm以及许多其他的分析器,是一个完全不同的厨房,超出了我的范围.

票数 3
EN

Stack Overflow用户

发布于 2018-06-21 05:36:00

只是对尤金的回答作了一点补充。

@Fork用于检查热代码的优化。有时你可能会在不同的叉子上看到非常不同的结果。这是因为JIT编译器根据使用情况将一些代码转换为更优化的代码。所以我个人至少开了三个叉子。

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

https://stackoverflow.com/questions/43763530

复制
相关文章

相似问题

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