如何使用Caliper进行基准测试?

时间:2014-01-24 20:04:12

标签: java maven caliper

我正在试图弄清楚如何使用Caliper在Eclipse中进行基准测试,我无处可去。我尝试按照这里找到的26分钟教程:https://code.google.com/p/caliper/但我很快就迷路了。我已经下载了Caliper jar文件,但我不确定它应该是什么文件夹。我还下载了Maven for Eclipse插件,但我甚至不确定是否有必要。是否可以从Eclipse的“帮助”菜单中的“安装新软件..”选项安装Caliper?我只想对我为数据结构和算法类创建的一些算法进行非常简单的速度测试。

3 个答案:

答案 0 :(得分:8)

这个答案现在已经过时了。 Caliper在Windows上工作了一年多,至少:https://code.google.com/p/caliper/issues/detail?id=167


Caliper doesn't work in Windows. See this case.你需要使用版本0.5-rc1,它有其他问题,但仍然很好,并且缺少很多功能,但它确实可以在Windows中运行。

完成后,您就可以开始编写基准测试。 Here is an example of a benchmark I wrote for a different Stack Overflow question

答案 1 :(得分:4)

以下是在撰写本文时caliper-1.0-beta2使用最新版本的Caliper设置工作Caliper类的方法。据我所知,这个程序没有记录在Caliper代码文件中的内联注释之外的任何地方。

首先在 pom.xml 中安装caliper-1.0-beta2或下载jar文件。然后制作一个这样的文件:

import com.google.caliper.Benchmark;
import com.google.caliper.runner.CaliperMain;

public class DemoBenchmark {
  public static void main(String[] args) {
    CaliperMain.main(DemoBenchmark.class, args);
  }

  @Benchmark
  void timeStringBuilder(int reps) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < reps; i++) {
      sb.setLength(0);
      sb.append("hello world");
    }
  }
}

运行该文件,Caliper将为您做基准测试。

答案 2 :(得分:0)

我在Windows上尝试了所有建议的解决方案,但是没有成功。

我总是遇到以下错误:

This selection yields 4 experiments.
ERROR: Trial failed to complete (its results will not be included in the run):
  The worker exited without producing data. It has likely crashed. Inspect C:\Users\Piotr\AppData\Local\Temp\1583760443321-0\trial-1.log to see any worker output.

我能够通过向自定义基准测试类中添加@VmOptions注释来解决此问题。

这是完整的配置:

@VmOptions("-XX:-TieredCompilation")
public class CaliperBenchmark {

    @BeforeExperiment
    void setUp() {
        // set up
    }

    @Benchmark
    void boxed() {
       // test
    }
}

行家:com.google.caliper caliper 1.0-beta-2 compile

主类:

public class Main {

    public static void main(String[] args) {
        CaliperMain.main(CaliperBenchmark.class, args);
    }
}

命令行:mvn exec:java -Dexec.mainClass="com.google.caliper.runner.CaliperMain" -Dexec.args="org.CaliperBenchmark"