Performance testing with JMH

The previous post focused on adding new monitoring metrics using the Servo library. Before such a change goes into production it usually is a good idea to measure the performance impact of the library, especially so when it impacts code on the critical path of the application.

To do this we need a java performance harness, and this is where JMH the micro-benchmark framework for Java comes into play.

  • The JMH benchmark file below defines two simple benchmark tests: one test for Servo's counter increment method and the other for the maxgauge update method.
     
  • The warmup phase, number of iterations and forks are all configurable via JMH Java's api.
     
  • A nice touch is the ability to specifiy a set of possible parameters directly in the code via the @Param annotation. JMH will cycle through the parameters and run all tests with each possible value: here both the counter and maxgauge will be tested twice, once with object registration turned on, and a second time with object registration turned off.

And the results:  

 

Written on April 15, 2015