2

通常,当我想测试性能时,我在运行代码之前和之后使用 System.nanoTime() 函数,然后我正在做一个减法。最近我注意到人们正在使用

@OutputTimeUnit(TimeUnit.NANOSECONDS)
@BenchmarkMode(Mode.AverageTime)

它是openjdk中JMH的一部分。

我们正在使用 Oracle jdk。我想知道是否有类似的工具,或者是否有另一种方法来构建、运行和分析 nano/micro/milli/macro 基准测试,而不是编写 System.nanoTime。

4

2 回答 2

4

来自 JMH 网站:

JMH 是一个 Java 工具,用于构建、运行和分析以 Java 和其他针对 JVM 的语言编写的 nano/micro/milli/macro 基准。

因此,无论您是否安装了 OpenJDK 或 Oracle 的 JDK,JMH 都应该可以工作。OpenJDK 和 Oracle 的 JDK 都是针对 JVM 的语言的实现,所以我看不出有什么问题。

就像一个注释——仅仅因为 JMH作为 OpenJDK 的一部分进行维护并不意味着它专门用于 OpenJDK。

于 2014-06-04T15:25:17.743 回答
2

使用 JMH 进行性能测试包括 maven 中的依赖项,如下所示

<dependency>
    <groupId>org.openjdk.jmh</groupId>
    <artifactId>jmh-core</artifactId>
    <version>1.11.2</version>
</dependency>

示例可以在http://psy-lob-saw.blogspot.in/2013/05/using-jmh-to-benchmark-multi-threaded.html中找到

于 2015-12-13T07:20:16.860 回答