summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMac Mollison <mollison@cs.unc.edu>2010-02-11 19:35:47 -0500
committerMac Mollison <mollison@cs.unc.edu>2010-02-11 19:35:47 -0500
commita92bbe8cf94f28b250cf023b3e4cfea148738468 (patch)
tree3143d40015413d890e842cffc7a127f397a858f9
parent0b581a1f70086961e487108bddee4013c77e42b7 (diff)
Implement statistics module
-rwxr-xr-xrun.py2
-rw-r--r--stats.py36
-rw-r--r--stdout_printer.py19
3 files changed, 53 insertions, 4 deletions
diff --git a/run.py b/run.py
index 9ac0389..c564a0f 100755
--- a/run.py
+++ b/run.py
@@ -15,6 +15,7 @@
15import trace_reader 15import trace_reader
16import sanitizer 16import sanitizer
17import gedf_test 17import gedf_test
18import stats
18import stdout_printer 19import stdout_printer
19 20
20############################################################################### 21###############################################################################
@@ -35,4 +36,5 @@ g6 = [
35stream = trace_reader.trace_reader(g6) 36stream = trace_reader.trace_reader(g6)
36stream = sanitizer.sanitizer(stream) 37stream = sanitizer.sanitizer(stream)
37stream = gedf_test.gedf_test(stream) 38stream = gedf_test.gedf_test(stream)
39stream = stats.stats(stream)
38stdout_printer.stdout_printer(stream) 40stdout_printer.stdout_printer(stream)
diff --git a/stats.py b/stats.py
new file mode 100644
index 0000000..6216f44
--- /dev/null
+++ b/stats.py
@@ -0,0 +1,36 @@
1###############################################################################
2# Description
3###############################################################################
4# Compute and produce statistics
5
6
7###############################################################################
8# Public Functions
9###############################################################################
10
11def stats(stream):
12 min_inversion = -1
13 max_inversion = -1
14 sum_inversions = 0
15 num_inversions = 0
16 for record in stream:
17 if record.type_name == 'inversion_end':
18 length = record.job.inversion_end - record.job.inversion_start
19 if length > 0:
20 num_inversions += 1
21 if length > max_inversion:
22 max_inversion = length
23 if length < min_inversion or min_inversion == -1:
24 min_inversion = length
25 sum_inversions += length
26 yield record
27 avg_inversion = int(sum_inversions / num_inversions)
28 class Obj(): pass
29 rec = Obj()
30 rec.record_type = "meta"
31 rec.type_name = "stats"
32 rec.num_inversions = num_inversions
33 rec.min_inversion = min_inversion
34 rec.max_inversion = max_inversion
35 rec.avg_inversion = avg_inversion
36 yield rec
diff --git a/stdout_printer.py b/stdout_printer.py
index 466f734..5bbcead 100644
--- a/stdout_printer.py
+++ b/stdout_printer.py
@@ -12,10 +12,14 @@ def stdout_printer(stream):
12 for record in stream: 12 for record in stream:
13 if record.record_type == "event": 13 if record.record_type == "event":
14 _print_event(record) 14 _print_event(record)
15 elif record.type_name == 'inversion_start': 15 elif record.record_type == "meta" and record.type_name == "stats":
16 _print_stats(record)
17 elif record.record_type == "error" and record.type_name == 'inversion_start':
16 _print_inversion_start(record) 18 _print_inversion_start(record)
17 elif record.type_name == 'inversion_end': 19 elif record.record_type == "error" and record.type_name == 'inversion_end':
18 _print_inversion_end(record) 20 _print_inversion_end(record)
21 else:
22 continue
19 print("") 23 print("")
20 24
21############################################################################### 25###############################################################################
@@ -39,7 +43,7 @@ def _print_inversion_start(record):
39 print("On CPU: ",end="") 43 print("On CPU: ",end="")
40 for job in record.on_cpu: 44 for job in record.on_cpu:
41 print(str(job) + " ",end="") 45 print(str(job) + " ",end="")
42 print("") 46 print("") #newline
43 47
44def _print_inversion_end(record): 48def _print_inversion_end(record):
45 print("Type: {}".format("Inversion end")) 49 print("Type: {}".format("Inversion end"))
@@ -55,4 +59,11 @@ def _print_inversion_end(record):
55 print("On CPU: ",end="") 59 print("On CPU: ",end="")
56 for job in record.on_cpu: 60 for job in record.on_cpu:
57 print(str(job) + " ",end="") 61 print(str(job) + " ",end="")
58 print("") 62 print("") #newline
63
64def _print_stats(record):
65 print("Inversion statistics")
66 print("Num inversions: {}".format(record.num_inversions))
67 print("Min inversion: {}".format(record.min_inversion))
68 print("Max inversion: {}".format(record.max_inversion))
69 print("Avg inversion: {}".format(record.avg_inversion))