nee*_*tno 5 java microbenchmark jmh
我正在做一个Maven项目。情况如下所示...
class Test {
public void applyAll() {
....................
....................
Collection<Migratable> applicableUpdates = SomeOtherClass.getApplicableUpdates();
doUpdate(applicableUpdates);
}
@Benchmark
public void apply(Migratable m) {
....................
....................
}
private void doUpdate(Collection<Migratable> applicableUpdates) throws Exception {
for (Migratable m : applicableUpdates) {
try {
apply(m);
} catch (Exception e) {
logger.error("Falid to apply migration {}" + m, e);
throw e;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要计算执行每次迁移需要多长时间。我只需要计算apply(Migratable m)方法的执行时间。
现在,当我使用“ mvn clean install”构建项目时,构建失败,并且显示“方法参数应为@State类”。
在这里,参数来自另一个方法doUpdate(Collection applyUpdates) [请参见场景]。那么如何在给定的情况下摆脱这个错误呢?
您的设置存在很多问题,而且您似乎还没有真正查看过 JMH 的示例;我强烈建议你这样做。
一些注意事项...
1) 你的@Benchmark
方法返回 void - 它应该返回something
; 否则使用BlackHoles
(这在示例中)。
2)如果参数来自另一个方法,则意味着该方法应该是一个@SetUp
方法(这在示例中)
Migratable
3)您看到的错误与您实际上不是一个类这一事实有关@State
(这又出现在示例中!)
在这一点上,我无法强调这一点 - 但请查看并理解示例。这并不容易,这是微基准测试,尽管 JMH 试图通过隐藏所有非常复杂的代码来让我们的事情变得更容易,但它仍然要求我们遵守那里存在的规则。
归档时间: |
|
查看次数: |
1193 次 |
最近记录: |