forked from coccinelle/coccinelle
/
extractor.awk
executable file
·94 lines (83 loc) · 2.55 KB
/
extractor.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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/awk -f
#
# Extracting time statistics from .failed/.ok files
#
BEGIN {
no_of_files = 0;
max_running_time = 0.0;
max_running_file = "";
min_running_time = 100000.0;
min_running_file = "";
sum_running_time = 0.0;
min_file_size_lines = 0;
max_file_size_lines = 0;
tot_file_size_lines = 0;
min_file_size_bytes = 0;
max_file_size_bytes = 0;
tot_file_size_bytes = 0;
}
/real[ \t]+[0-9]+m[0-9]+[.][0-9]+/{
# The file currently processed
current_file = FILENAME;
# Count the number of files
no_of_files++;
# Parse time field
split($2,timearr,/[m.]/);
current_time = timearr[1] * 60.0; # minutes
current_time += timearr[2]; # seconds
current_time += timearr[3] / 1000.0; # 1/1000th sec.
# Print progress
printf "%6.3fs (%s)\n", current_time, current_file;
# Update total time
sum_running_time += current_time;
# Update max and min
if(current_time > max_running_time)
{
max_running_time = current_time;
max_running_file = current_file;
}
if(current_time < min_running_time)
{
min_running_time = current_time;
min_running_file = current_file;
}
# Find corresponding .c file
gsub(/.(ok|failed|spatch_ok|gave_up)$/,".c",current_file);
# Update file sizes (in lines)
("wc -l " current_file) | getline;
current_size_lines = $1;
tot_file_size_lines += current_size_lines;
if(current_size_lines > max_file_size_lines)
{
max_file_size_lines = current_size_lines;
}
if(current_size_lines < min_file_size_lines)
{
min_file_size_lines = current_size_lines;
}
# Update file sizes (in bytes)
("du " current_file) | getline;
current_size_bytes = $1;
tot_file_size_bytes += current_size_bytes;
if(current_size_bytes > max_file_size_bytes)
{
max_file_size_lines = current_size_bytes;
}
if(current_size_bytes < min_file_size_bytes)
{
min_file_size_bytes = current_size_bytes;
}
}
END {
printf "!!No. of files : %6d\n", no_of_files;
printf " Total # of lines: %6d\n", tot_file_size_lines;
printf "!!Avg. # of lines : %9.2f\n", (tot_file_size_lines / no_of_files);
printf " Total size (KB) : %6d\n", tot_file_size_bytes;
printf " Avg. size (KB) : %9.2f\n", (tot_file_size_bytes / no_of_files);
printf " Minimum time : %9.2fs (%s)\n",
min_running_time, min_running_file;
printf "!!Maximum time : %9.2fs (%s)\n",
max_running_time, max_running_file;
printf " Total time : %9.2fs\n", sum_running_time;
printf "!!Average time : %9.2fs\n", (sum_running_time / no_of_files);
}