summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/facebookgo/stats/aggregation.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/facebookgo/stats/aggregation.go')
-rw-r--r--vendor/github.com/facebookgo/stats/aggregation.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/vendor/github.com/facebookgo/stats/aggregation.go b/vendor/github.com/facebookgo/stats/aggregation.go
new file mode 100644
index 00000000..8f57fb7f
--- /dev/null
+++ b/vendor/github.com/facebookgo/stats/aggregation.go
@@ -0,0 +1,35 @@
+package stats
+
+import "sort"
+
+// Average returns the average value
+func Average(values []float64) float64 {
+ if len(values) == 0 {
+ return 0
+ }
+
+ var val float64
+ for _, point := range values {
+ val += point
+ }
+ return val / float64(len(values))
+}
+
+// Sum returns the sum of all the given values
+func Sum(values []float64) float64 {
+ var val float64
+ for _, point := range values {
+ val += point
+ }
+ return val
+}
+
+// Percentiles returns a map containing the asked for percentiles
+func Percentiles(values []float64, percentiles map[string]float64) map[string]float64 {
+ sort.Float64s(values)
+ results := map[string]float64{}
+ for label, p := range percentiles {
+ results[label] = values[int(float64(len(values))*p)]
+ }
+ return results
+}