### Structure of Loops

The time needed to execute the timingTest function is measured by taking a number of samples--the sample count. Each sample consists of a call to timingSetup, a number of calls to timingTest, and a call to timingCleanup.

The calls to timingTest happen in a tight loop--the timing loop. Subclasses or the caller can control how many iterations comprise the timing loop by changing the timing count. The total time taken by the timing loop is divided by the number of iterations to get a single sample time. The median of all sample times is taken as the estimate of the time to execute the TimingTest function.