如何使用Java 12的Microbenchmark Suite?

How to use Java 12's Microbenchmark Suite?

根据 JEP 230: Microbenchmark Suite,存在一个内置于 Java 12 的微基准测试套件。JEP 解释说它基本上是 JMH,但不需要使用 [=25= 显式依赖它].但是,它没有指定如何访问属于套件的 classes/annotations 来执行基准测试。

我的问题是:

您的解释不正确。 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.