从日食中的主要运行JMH时“没有匹配的基准”

时间:2014-01-28 05:25:59

标签: java eclipse benchmarking jmh

我想通过在eclipse中将其作为Java Application运行来试用JMH的新功能。我导入并构建了jmh-samples项目。编译后的类以/ jmh-samples / target / generated-sources / annotations结尾,/ target /中有几个JAR,并且从命令行运行microbenchmarks.jar像往常一样工作。

然而,当我执行main时,我总是得到

No matching benchmarks. Miss-spelled regexp?

有什么想法吗?我使用的是0.3版

3 个答案:

答案 0 :(得分:3)

jmh-dev@是与开发人员进行沟通的更好方式。

很少有尝试:

  1. 劫持Main可能不是一个好主意。请改用Java API,like this sample
  2. 使用-v extra调试模式匹配:过滤器正则表达式不正确,或者没有运行基准测试。
  3. 如果正则表达式不正确,请将其修复。
  4. 如果没有可匹配的基准,则可能无法正确生成和/或拾取资源。确保类路径上也可以使用target/classes/

答案 1 :(得分:3)

好吧,看起来默认情况下jmh会在META-INF / Microbenchmarks下查找生成的类,maven build会置于项目的根目录下。但是,eclipse项目的根不在类路径上,因此在IDE中执行它会导致“找不到基准”。

我按照以下方式运行:

  1. mvn clean package(使用外部maven安装,不嵌入 在日食中)
  2. 右键单击jmh-samples项目,选择“Build” 路径 - >用作源文件夹“
  3. 您现在可以在jclipse中运行jmh-samples中的任何基准测试作为Java Application
  4. 在缺点方面,你会在问题视图中看到1000多个“错误”,因为eclipse与自动生成的文件混淆了,但是哦,好吧,至少它是有效的。

答案 2 :(得分:1)

我也遇到了同样的问题,因此我遵循了教程here。那解决了这个问题。

以下是我采取的步骤:

  • 我使用code from the tutorial AS-IS来了解其工作原理。

  • 然后我只是将mvn清理并安装

  • 我看到了在target -> annotations -> <package path> -> generated中创建的所有类集
  • 然后我运行了BenchmarkRunner main()类,并且这个方法起作用了。