根据JEP 230: Microbenchmark Suite,Java 12 内置了一个微基准套件。JEP 解释说它基本上是 JMH,但不需要使用 Maven/Gradle 显式依赖它。但是,它没有指定如何访问属于该套件的类/注释以执行基准测试。
我的问题是:
- 我需要一个特定的 Java 模块
module-info.java
才能使用这个套件吗? - 该套件的类/注释位于哪些包中?
- 这个套件和 JMH 有什么主要区别吗?
根据JEP 230: Microbenchmark Suite,Java 12 内置了一个微基准套件。JEP 解释说它基本上是 JMH,但不需要使用 Maven/Gradle 显式依赖它。但是,它没有指定如何访问属于该套件的类/注释以执行基准测试。
我的问题是:
module-info.java
才能使用这个套件吗?你的解释是不正确的。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-math3、jmh-core、jmh-generator-annprocess和jopt-simple。