-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy pathgenerate_table.awk
executable file
·71 lines (62 loc) · 1.68 KB
/
generate_table.awk
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/gawk -f
#
# Usage: generate_table.awk < ${board}.txt
#
# Takes the *.txt file generated by AutoBenchmark.ino and generates an ASCII
# table that can be inserted into the README.md. Collects both sizeof()
# information as well as CPU benchmarks.
BEGIN {
# Set to 1 when 'SIZEOF' is detected
collect_sizeof = 0
# Set to 1 when 'BENCHMARKS' is detected
collect_benchmarks = 0
}
/^SIZEOF/ {
collect_sizeof = 1
collect_benchmarks = 0
sizeof_index = 0
next
}
/^BENCHMARKS/ {
collect_sizeof = 0
collect_benchmarks = 1
benchmark_index = 0
next
}
!/^END/ {
if (collect_sizeof) {
s[sizeof_index] = $0
sizeof_index++
}
if (collect_benchmarks) {
u[benchmark_index]["name"] = $1
u[benchmark_index]["min"] = $2
u[benchmark_index]["avg"] = $3
u[benchmark_index]["max"] = $4
u[benchmark_index]["samples"] = $5
benchmark_index++
}
}
END {
TOTAL_BENCHMARKS = benchmark_index
TOTAL_SIZEOF = sizeof_index
printf("Sizes of Objects:\n")
for (i = 0; i < TOTAL_SIZEOF; i++) {
print s[i]
}
print ""
print "CPU:"
printf("+---------------------------+-------------+---------+\n")
printf("| Button Event | min/avg/max | samples |\n")
printf("|---------------------------+-------------+---------|\n")
for (i = 0; i < TOTAL_BENCHMARKS; i++) {
name = u[i]["name"]
if (name ~ /^ButtonConfigFast1/ \
|| name ~ /^Encoded4To2ButtonConfig$/) {
printf("|---------------------------+-------------+---------|\n")
}
printf("| %-25s | %3d/%3d/%3d | %7d |\n",
u[i]["name"], u[i]["min"], u[i]["avg"], u[i]["max"], u[i]["samples"])
}
printf("+---------------------------+-------------+---------+\n")
}