The abstract class BenchmarkUnit is a base class for benchmark units. It allows to measure the benchmark execution time for a number of runs. Also it keep information of the unit precedence during the run.

The class RunInfo is a holder for such benchmark run information as execution time and the number of runs.

The class BenckmarkInfo is a holder for benchmark information for several executions. It is based on RunInfo. The class provides functions for average run time and mean-square deviation for run times.

The class Benchmark opertaes with a collection of BenchmarkUnits. It arranges them according to their precedence, executes them, and collects the timing information.