- Make it easy to write small benchmarks.
- Express everything in Java.
- Use Java annotations to configure benchmarks.
- Make benchmarking run as fast as possible to get meaningful results.
- Use many iterations per run to make timings accurate.
- Use multiple runs and take the fastest.
- Monitor class recomiplation and garbage collection.
- Tell the user to cast a critical eye over the given benchmark results.