this repo has no description
at master 48 lines 1.0 kB view raw
1function average(values) { 2 let total = 0; 3 4 for (let i = 0; i < values.length; i += 1) { 5 total += values[i]; 6 } 7 8 return total / values.length; 9} 10 11function median(values) { 12 const half = Math.floor(values.length / 2); 13 14 values.sort((a, b) => a - b); 15 16 if (values.length % 2) return values[half]; 17 18 return (values[half - 1] + values[half]) / 2; 19} 20 21function quartile(values, percentile) { 22 values.sort((a, b) => a - b); 23 const pos = (values.length - 1) * percentile; 24 const base = Math.floor(pos); 25 const rest = pos - base; 26 27 if (values[base + 1] !== undefined) { 28 return values[base] + rest * (values[base + 1] - values[base]); 29 } 30 31 return values[base]; 32} 33 34function jitter(values) { 35 // Average distance between consecutive latency measurements... 36 let jitters = []; 37 38 for (let i = 0; i < values.length - 1; i += 1) { 39 jitters.push(Math.abs(values[i] - values[i+1])); 40 } 41 42 return average(jitters); 43} 44 45exports.average = average; 46exports.median = median; 47exports.quartile = quartile; 48exports.jitter = jitter;