如何使用Java 12的Microbenchmark Suite?
How to use Java 12's Microbenchmark Suite?
根据 JEP 230: Microbenchmark Suite,存在一个内置于 Java 12 的微基准测试套件。JEP 解释说它基本上是 JMH,但不需要使用 [=25= 显式依赖它].但是,它没有指定如何访问属于套件的 classes/annotations 来执行基准测试。
我的问题是:
- 我的
module-info.java
中是否需要特定的 Java 模块才能使用此套件?
- 此套件的 classes/annotations 位于哪些包中?
- 此套件与 JMH 之间有什么主要区别吗?
您的解释不正确。 JEP 说:
Add a basic suite of microbenchmarks to the JDK source code, and make it easy for developers to run existing microbenchmarks and create new ones.
即这不一定是使它进入 JDK 发行版的东西,只是添加到源代码存储库中的东西,以便更容易 运行 对 JDK 代码进行基准测试。不过,公平地说,它 listed 作为 JDK 12 'features' 之一的事实似乎有点误导。
基准可以通过使用 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 的目录。所需的罐子是:commons-math3, jmh-core, jmh-generator-annprocess, and jopt-simple.
根据 JEP 230: Microbenchmark Suite,存在一个内置于 Java 12 的微基准测试套件。JEP 解释说它基本上是 JMH,但不需要使用 [=25= 显式依赖它].但是,它没有指定如何访问属于套件的 classes/annotations 来执行基准测试。
我的问题是:
- 我的
module-info.java
中是否需要特定的 Java 模块才能使用此套件? - 此套件的 classes/annotations 位于哪些包中?
- 此套件与 JMH 之间有什么主要区别吗?
您的解释不正确。 JEP 说:
Add a basic suite of microbenchmarks to the JDK source code, and make it easy for developers to run existing microbenchmarks and create new ones.
即这不一定是使它进入 JDK 发行版的东西,只是添加到源代码存储库中的东西,以便更容易 运行 对 JDK 代码进行基准测试。不过,公平地说,它 listed 作为 JDK 12 'features' 之一的事实似乎有点误导。
基准可以通过使用 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 的目录。所需的罐子是:commons-math3, jmh-core, jmh-generator-annprocess, and jopt-simple.