Provides classes for doing all the calculations described in the Robust Java benchmarking series of articles (Part 1: Issues, Part 2: Statistics and solutions, as well as the article supplement) which were published at IBM developerWorks.

Design philosophy

A goal was for the reader looking at the code listings in the article to focus on its benchmarking aspects, and not on its organization.

So, the simplest object oriented structure was chosen, namely, the code is static based (i.e. consists only of static fields and methods). This choice would not be done for normal program code for many reasons, such as poor subclassability.

Furthermore, all the code is in the default (unnamed) package.

Class names

The classes in this package are named according to a convention. The first part of their name is N followed by an ID number, which causes the files to be sortable in order of occurence in the article. The second part tells which part of the article it is associated with. The final part is some brief description of the code inside, Hopefully, this convention will enable you to quickly locate relevant code.

Differences between the code here and the code in the article

The chief differences are:

  1. the code here has more comments, while the code in the article deleted some in order to fit inside code listing limits. Similarly, in a few cases, variable names had to be shortened and lines split up in the article version.
  2. all of the members of the code here have either public or protected access; in the article, some have more restricted access (these were old versions of the code, written before the decision was made to have either public or protected access)
  3. the code here does a bit more pretty printing, such as say where the result is coming from, like
        System.out.println();
        System.out.println("N04_Part1_Listing5:");

Miscellaneous comments

Some of the source code files end in the extension .nc instead of the usual .java. This extension change causes the file to be "not compiled". There should be a note at the top of the file explaining the reason.

Multithread safety

No class in this package was designed for multithread safety. Consequently, all should be considered as not multithread safe (if any is, then it is by accident).