// ComputeStats updates the derived statistics in s from the raw // samples in s.Values. func (stat *Benchstat) ComputeStats() { // Discard outliers. values := stats.Sample{Xs: stat.Values} q1, q3 := values.Percentile(0.25), values.Percentile(0.75) lo, hi := q1-1.5*(q3-q1), q3+1.5*(q3-q1) for _, value := range stat.Values { if lo <= value && value <= hi { stat.RValues = append(stat.RValues, value) } } // Compute statistics of remaining data. stat.Min, stat.Max = stats.Bounds(stat.RValues) stat.Mean = stats.Mean(stat.RValues) stat.StdDev = stats.StdDev(stat.RValues) }
// ComputeStats updates the derived statistics in s from the raw // samples in s.Values. func (stat *Benchstat) ComputeStats() { stat.Mean = stats.Mean(stat.Values) }