I'm trying to determine if the results that I have obtained from running a series of benchmarks are statistically significant. i.e. if one benchmark really is faster than the other or if it was just a fluke.
- I have 5 different programs.
- I run these 5 different programs many times each to obtain a dataset of running times.
- I then compute the sample standard deviation and the standard error for the 50th, 95th and 99th percentiles.
I set the error bars at +/- two times the standard error.
If two different programs have overlapping error bars I consider the result to be a fluke (inconclusive). Like this
50 95 99 (ratio) ops/millisecond
cow_append_preallocate_unrolled 0.001 0.001 0.001 1.000 1.000 1.000 53533 (baseline)
cow_append_preallocate 0.001 0.001 0.002 1.000 1.000 2.000 46866 (inconclusive!)
cow_append_direct 0.000 0.001 0.008 0.800 1.000 8.444 40561 (inconclusive!)
cow_append_slice 0.001 0.001 0.002 1.800 1.857 1.889 29114
cow_append_spread 0.001 0.001 0.002 2.200 2.143 2.333 26025
cow_append_for 0.001 0.002 0.004 3.000 2.429 4.000 19507
When I ran my experiment with a sample size of 1000. I get lots of inconclusive results (error bars touching all over) but when I ran my experiment with a sample size of 1 000 000 I got consistent results. In line with my expectations.
I know that I have a lot of variance in my programs that I cannot control for so I've opted to do it this way but I would very much appreciate if someone could point out flaws in my methodology. I've based my work on this paper. There are lots of warnings on the Internet about comparing overlapping error bars but I can't make up my mind about it...