10

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

但是,当我执行 main 我总是得到

No matching benchmarks. Miss-spelled regexp?

有任何想法吗?我使用的是 0.3 版

4

3 回答 3

3

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

几件事要尝试:

  1. 劫持Main可能不是一个好主意。请改用 Java API,例如这个示例
  2. 用于-v extra调试模式匹配:过滤器正则表达式不正确,或者没有要运行的基准。
  3. 如果正则表达式不正确,请修复它。
  4. 如果没有可匹配的基准,则有可能无法正确生成和/或获取资源。确保target/classes/在类路径上也可用。
于 2014-01-29T08:18:07.033 回答
3

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

我让它按照以下方式运行:

  1. mvn clean package(使用外部maven安装,不嵌入eclipse)
  2. 右键单击 jmh-samples 项目,选择“构建路径 -> 用作源文件夹”
  3. 您现在可以在 Eclipse 中将 jmh-samples 中的任何基准作为 Java 应用程序运行

不利的一面是,您在问题视图中会遇到 1000 多个“错误”,因为 eclipse 会与自动生成的文件混淆,但是哦,好吧,至少它可以工作。

于 2014-02-11T03:30:00.637 回答
1

我也面临同样的问题,我按照这里的教程进行操作。这解决了这个问题。

以下是我采取的步骤:

  • 我使用了AS-IS教程中的代码来了解它是如何工作的。

  • 然后我只是做了 mvn clean 并安装

  • 我看到所有的类都在target -> annotations -> <package path> -> generated
  • 然后我BenchmarkRunner main()上课了,这很奏效。
于 2019-10-01T18:35:21.423 回答