How to use Caliper for benchmarking?
This answer is now obsolete. Caliper has worked in Windows for more than a year, at least: https://code.google.com/p/caliper/issues/detail?id=167
Caliper doesn't work in Windows. See this case. You need to use version 0.5-rc1, which has other issues but is still pretty okay and is missing a lot of features, but it does work in Windows.
If you know how to use Maven, add this pom snippet to your pom.xml.
<dependency> <groupId>com.google.caliper</groupId> <artifactId>caliper</artifactId> <version>0.5-rc1</version> </dependency>
- If you want to learn maven, first read this: http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
- Convert your project to a maven project (Right click on project -> Configure -> Convert to Maven Project)
- If you don't know how to use Maven (here is a guide to how to do this with pictures):
- Download the 0.5-rc1 jar
- Right click on the project you want to use and choose
Build Path -> Configure Build Path
- Add it to your libraries tab using
Add External Jar
Once you've done that, you can start writing benchmarks. Here is an example of a benchmark I wrote for a different Stack Overflow question.
Here is how you set up a working Caliper class using the latest version of Caliper as of this writing, caliper-1.0-beta2 . As far as I can tell this procedure isn't documented anywhere outside of inline comments in the Caliper code files.
First install caliper-1.0-beta2 in pom.xml or by downloading the jar file. Then make a file like this:
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");
}
}
}
Run that file, and Caliper will do the benchmark for you.