summaryrefslogtreecommitdiff
path: root/fps_stats.awk
blob: 041d5848551267baee6a00d32320f392919fd195 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/awk -f

BEGIN {
	min = 10000000
}

{
	val = $1

	if (val < min)
		min = val
	if (val > max)
		max = val

	delta = val - mean
	mean += delta / NR
	v += delta * (val - mean)

	# percentiles
	array[NR] = val
}

END {
	if (NR > 1)
            v = v/(NR-1)
        else
            v = 0

	qsort(array, 1, NR)

	p50 = int(NR / 2)
	p90 = int(NR * 0.9)
	p95 = int(NR * 0.95)
	p99 = int(NR * 0.99)

	print mean " min/p50/90/95/99/max/std = " min " / " array[p50] " / " array[p90] " / " array[p95] " / " array[p99] " / " max " / " sqrt(v) " n=" NR
}

function qsort(A, left, right,   i, last) {
	if (left >= right)
		return
	swap(A, left, left+int((right-left+1)*rand()))
	last = left
	for (i = left+1; i <= right; i++)
		if (A[i] < A[left])
			swap(A, ++last, i)
	swap(A, left, last)
	qsort(A, left, last-1)
	qsort(A, last+1, right)
}
function swap(A, i, j,   t) {
	t = A[i]; A[i] = A[j]; A[j] = t
}