我正在做一个大sbt
项目,我想对一些功能进行基准测试。我决定我将使用jmh
,因此我启用了sbt-jmh
插件。
我编写了一个如下所示的初始测试基准:
import org.openjdk.jmh.annotations.Benchmark
class TestBenchmark {
@Benchmark
def functionToBenchMark = {
5 + 5
}
}
但是,当我尝试运行它时,jmh:run -i 20 -wi 10 -f1 -t1 .*TestBenchmark.*
我得到java.lang.InternalError: Malformed class name
. 我刚刚重建了项目,一切都编译并运行得很好。
第一条打印的消息说
使用“反射”生成器处理来自 /path-to-repo/target/scala-2.11/classes 的 6718 个类
我觉得插件试图反映整个项目很奇怪(我想包括标准库中的类)。在重建之前,我得到了NoClassDefFoundError
,尽管该项目在其他方面运行良好。
由于项目中有很多类,我不能确保每一点都符合jmh
要求,我想知道是否有办法克服这个问题,只关注和反映带有注释的相关类@Benchmark
?
我的sbt
版本是0.13.6
,sbt-jmh
版本是0.2.25
。