The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
This module is for managing sets of benchmark results (averaging across runs,
tossing high and low values, finding the range of scores, etc) and comparing
sets of runs to one another.  My main use of this has been with IOZone results
testing various filesystems under Mac OS X.  I have included my badly done,
not well documented benchmark automation scripts to show how this module
can be used to automate benchmarking with IOZone (http://www.iozone.org/).
They can be found in the examples directory.

Check out my results page if you want to see what kind of information it produces -
http://jason.tiltastech.com/performance/Mac_OS_X_Filesystem_Performance_Comparison.html

If people find this useful I will polish it a bit and add in some features (perhaps HTML
and GNUplot output..)

Here is the current state of the documentation.  Sorry, I know it is pretty minimal.
Look at the example code if you can't follow this.

NAME
       Data::BenchmarkResults - Perl extension for averaging and
       comparing multiple benchmark runs.

SYNOPSIS
         use Data::BenchmarkResults;
         $conditionA_results = new Data::BenchmarkResults;
         $conditionB_results = new Data::BenchmarkResults;

         #Load test result runs for the first condition
         $conditionA_results->add_result_set("test1","run1",\@data1);
         $conditionA_results->add_result_set("test2","run1",\@data2);
         $conditionA_results->add_result_set("test1","run2",\@data3);
         $conditionA_results->add_result_set("test2","run2",\@data4);

         #Load test result runs for the second condition
         $conditionB_results->add_result_set("test1","run1",\@data5);
         $conditionB_results->add_result_set("test2","run2",\@data6);
         $conditionB_results->add_result_set("test1","run1",\@data7);
         $conditionB_results->add_result_set("test2","run2",\@data8);

         #Average (mean average) the results of all the the runs of 'test1'
         # w/o tossing the highest and lowest values (replace the '0' with '1'to
         # toss the highest and lowest values

         my $computed = $conditionA_results->process_result_set("test1","mean",0);
         my $computed2 = $conditionB_results->process_result_set("test1","mean",0);

         #OR process all of the tests at once (tossing the highest and lowest value) :

         $conditionA_results->process_all_result_sets("mean",1);
         $conditionB_results->process_all_result_sets("mean",1);

         #Print out all of the processed test results
         print "Condition A results.... \n\n"
         $conditionA_results->print_calculated_sets;
         print "Condition B results.... \n\n"
         $conditionB_results->print_calculated_sets;

         #Compare results of 'test1' of condition B against those with condition A
         # as a percentage change from A to B

         my $compared = $conditionB_results->compare_result_set($conditionA_results,"test1");

         #OR compare all the processed test results from one condition to those of another
         my $total_comparison = $conditionB_results->compare_all_result_sets($conditionA_results);


DESCRIPTION
       new

       add_result_set

       add_computed_set

       process_result_set

       process_all_result_sets

       compare_result_set

       compare_all_result_sets

       print_calculated_sets

       EXPORT

       None by default.

AUTHOR
       Jason Titus, jasontitus@tiltastech.com