测量eclipse中的速度,运行时间,执行时间

时间:2017-12-08 11:30:57

标签: java eclipse-plugin runtime performance-testing eclipse-oxygen

我试图找到一个合理的机会来测量我的java程序/程序部分的速度,例如:测试两种方法中哪一种执行得更快。注释掉其中一种方法,确定运行时间,最后比较时间。我不想在我的程序中使用任何代码,如:

public long getTime() {
  return System.currentTimeMillis();
}

对于eclipse氧气,我尝试过在eclipse中集成的java profiler,名为:JVM Monitor。

但是我只得到cpu的复杂细节,例如和其他信息,并不真正属于我的方法的执行时间。或者我忽视了什么。

也许来自eclipse Marketplaces的另一个插件更有用,只关注执行时间?

1 个答案:

答案 0 :(得分:0)

来自OpenJDK的

JMH (Java Microbenchmark Harness)应该满足您的需求:

  

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

     

运行JMH基准测试的推荐方法是使用Maven来设置a   依赖于应用程序的jar文件的独立项目。   这种方法是优选的,以确保基准测试正确   初始化并产生可靠的结果。它可以运行   来自现有项目的基准,甚至来自内部的基准   IDE,但设置更复杂,结果不太可靠。

这是使用JMH进行基准测试的简单方法:

  • 使用原型 jmh-java-benchmark-archetype
  • 创建Maven项目
  • 在Eclipse中编辑该项目以创建您想要进行基准测试的代码,并构建一个jar文件。
  • 从终端/命令提示符执行您的jar文件。 JMH将做其事,并显示其结果。

为了给你一个更好的主意,这里有一些简单的带注释的代码来将数据加载到HashMap中:

import java.util.HashMap;
import java.util.concurrent.TimeUnit;

import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;

public class MyBenchmark {

    @Benchmark
    @BenchmarkMode(Mode.AverageTime)
    @OutputTimeUnit(TimeUnit.MILLISECONDS)
    public void testMethod() {

        HashMap<Integer, String> map = new HashMap<>();

        for (int i = 0; i < 1000; i++) {
            map.put(i, "" + i);
        }
    }
}

这实际上是使用JMH所需的所有代码,并且类和方法已由Maven创建;我刚刚提供了注释和四行Java。

当然,从JMH中获取有用的信息远不止于此,但是如果您按照许多在线教程中的一个,您应该能够在大约15分钟内完成并运行。 。 Openjdk还提供38 code samples

相关问题