1 | 'use strict'
|
---|
2 |
|
---|
3 | const percentiles = module.exports.percentiles = [
|
---|
4 | 0.001,
|
---|
5 | 0.01,
|
---|
6 | 0.1,
|
---|
7 | 1,
|
---|
8 | 2.5,
|
---|
9 | 10,
|
---|
10 | 25,
|
---|
11 | 50,
|
---|
12 | 75,
|
---|
13 | 90,
|
---|
14 | 97.5,
|
---|
15 | 99,
|
---|
16 | 99.9,
|
---|
17 | 99.99,
|
---|
18 | 99.999
|
---|
19 | ]
|
---|
20 |
|
---|
21 | module.exports.histAsObj = function (hist, total) {
|
---|
22 | const mean = Math.ceil(getMean(hist) * 100) / 100
|
---|
23 | const result = {
|
---|
24 | average: mean, // added for backward compat with wrk
|
---|
25 | mean: mean,
|
---|
26 | stddev: Math.ceil(getStdDeviation(hist) * 100) / 100,
|
---|
27 | min: getMin(hist),
|
---|
28 | max: getMax(hist)
|
---|
29 | }
|
---|
30 |
|
---|
31 | if (typeof total === 'number') {
|
---|
32 | result.total = total
|
---|
33 | }
|
---|
34 |
|
---|
35 | return result
|
---|
36 | }
|
---|
37 |
|
---|
38 | module.exports.addPercentiles = function (hist, result) {
|
---|
39 | percentiles.forEach(function (perc) {
|
---|
40 | const key = ('p' + perc).replace('.', '_')
|
---|
41 | if (typeof hist.percentile === 'function') {
|
---|
42 | result[key] = hist.percentile(perc)
|
---|
43 | } else if (typeof hist.getValueAtPercentile === 'function') {
|
---|
44 | result[key] = hist.getValueAtPercentile(perc)
|
---|
45 | }
|
---|
46 | })
|
---|
47 |
|
---|
48 | return result
|
---|
49 | }
|
---|
50 |
|
---|
51 | function getMean (hist) {
|
---|
52 | if (typeof hist.mean === 'function') {
|
---|
53 | return hist.mean()
|
---|
54 | }
|
---|
55 | if (typeof hist.getMean === 'function') {
|
---|
56 | return hist.getMean()
|
---|
57 | }
|
---|
58 | return hist.mean
|
---|
59 | }
|
---|
60 |
|
---|
61 | function getMin (hist) {
|
---|
62 | if (typeof hist.min === 'function') {
|
---|
63 | return hist.min()
|
---|
64 | }
|
---|
65 | return hist.minNonZeroValue
|
---|
66 | }
|
---|
67 |
|
---|
68 | function getMax (hist) {
|
---|
69 | if (typeof hist.max === 'function') {
|
---|
70 | return hist.max()
|
---|
71 | }
|
---|
72 | return hist.maxValue
|
---|
73 | }
|
---|
74 |
|
---|
75 | function getStdDeviation (hist) {
|
---|
76 | if (typeof hist.stddev === 'function') {
|
---|
77 | return hist.stddev()
|
---|
78 | }
|
---|
79 | if (typeof hist.getStdDeviation === 'function') {
|
---|
80 | return hist.getStdDeviation()
|
---|
81 | }
|
---|
82 | return hist.stdDeviation
|
---|
83 | }
|
---|