如何使用卡尺进行基准测试?

9
我正在尝试使用Caliper在Eclipse中进行基准测试,但是我一无所获。我尝试按照这里找到的26分钟教程进行操作:https://code.google.com/p/caliper/,但是我很快就迷失了方向。我已经下载了Caliper jar文件,但我不确定应该将其放在哪个文件夹中。我还下载了Maven for Eclipse插件,但我甚至不确定是否需要它。是否可能从Eclipse中的“安装新软件...”选项安装Caliper?我只想能够为我正在学习的数据结构和算法课程中创建的一些算法进行非常简单的速度测试。

你使用的是Windows还是Linux?你正在使用哪个版本的caliper? - durron597
我正在使用Windows,并下载了caliper-1.0-beta-1-all.jar。 - LooMeenin
我将文件下载到我的“下载”文件夹中,因为我不确定应该下载到哪里。 - LooMeenin
3个回答

9

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


Caliper不能在Windows上运行。请查看此文。您需要使用版本0.5-rc1,它还存在其他问题,但仍然相当不错,而且缺少许多功能,但是它可以在Windows上工作。

完成这些步骤后,您可以开始编写基准测试。 这里是我为另一个Stack Overflow问题编写的基准测试示例


我该如何将pom片段添加到我的pom.xml文件中?我已经在Eclipse中安装了Maven,只是不确定如何使用它。如果这是一个简单的过程,我想使用它。 - LooMeenin
@LooMeenin 我增加了一点关于Maven的内容。一旦你学会了,Maven非常非常好用,但是它相当复杂,超出了这个问题的范围。我建议在这里搜索或通过Google了解如何使用Maven和m2eclipse。 - durron597
@durron597 运行它怎么样?您介意添加从pom中运行它的部分吗?我一直在使用不同的问题作为基础,但没有什么好运:https://dev59.com/B3bZa4cB1Zd3GeqPBAl1 - Bodey Baker
我的错误不在于上面的Maven pom文件,而是因为Guava已经是一个依赖项,而0.5-rc1版本无法与14.0.1以上的Guava兼容。 - Bodey Baker
@porciesphino 他们声称新版本可以在Windows上运行,但我还没有尝试过。https://code.google.com/p/caliper/issues/detail?id=167 - durron597

9
以下是关于如何使用最新版Caliper类(截至撰写本文),caliper-1.0-beta2的设置步骤。据我所知,该过程仅在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会为您进行基准测试。


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
    }
}

Maven: 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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接