bencheeorg / benchee

Easy and extensible benchmarking in Elixir providing you with lots of statistics!
MIT License
1.42k stars 66 forks source link

Built in outlier detection #382

Open PragTob opened 1 year ago

PragTob commented 1 year ago

Due to Garbage Collection, scheduling and load on the system we can get outliers in our measurements that impact esp. the average a lot. That happens esp. a lot with nano-second level benchmarks as even a 1ms gap is huge for them.

I'm no expert not 100% sure what to use, but I already wanted to support more data calculated by benchee itself for box plots (so to run less JS which makes this not be able to be opened). I talk about it here (I had forgotten): https://www.youtube.com/watch?v=C4hqcLwxs3A&t=1398s

But basically, as far as I understand p75 - p25 is the inter quantile range (IQR) and everything that is more than 1.5 IQR removed from p75 or p25 are considered outliers. Skimming over wikipedia, that description seems accurate: https://en.wikipedia.org/wiki/Box_plot (Elements --> Whiskers)

We could run this statistical analysis once, remove the offending values and then rerun statistics calculation.

I think this should be opt in behavior (so default to false).

Kudos to the elixirforum post to remind me that we didn't yet have an issue for this.