10

根据JEP 230: Microbenchmark Suite,Java 12 内置了一个微基准套件。JEP 解释说它基本上是 JMH,但不需要使用 Maven/Gradle 显式依赖它。但是,它没有指定如何访问属于该套件的类/注释以执行基准测试。

我的问题是:

  • 我需要一个特定的 Java 模块module-info.java才能使用这个套件吗?
  • 该套件的类/注释位于哪些包中?
  • 这个套件和 JMH 有什么主要区别吗?
4

1 回答 1

17

你的解释是不正确的。JEP 说:

在JDK 源代码中添加一套基本的微基准测试,让开发人员可以轻松运行现有的微基准测试并创建新的微基准测试。

即,这不一定是使其成为 JDK 发行版的东西,只是添加到源代码存储库中以便更容易在 JDK 代码上运行基准测试的东西。不过,公平地说,它被列为JDK 12 的“功能”之一这一事实似乎有点误导。

可以使用 OpenJDK 构建系统运行基准测试。从https://github.com/openjdk/jdk(或包含 JEP 的另一个存储库)克隆 OpenJDK 源代码后,您可以运行基准测试,例如使用:

make test TEST="micro:java.lang.reflect"

基准位于\test\micro\目录中。另请参阅文档:https ://github.com/openjdk/jdk/blob/master/doc/testing.md#microbenchmarks

此外,这需要您在生成构建配置时指定 JMH 及其依赖项:

bash configure --with-jmh="/path/to/jmh/jars"

指定的路径应指向包含 JMH jar 的目录。所需的 jar 包是:commons-math3jmh-corejmh-generator-annprocessjopt-simple

于 2019-03-19T21:41:05.437 回答