summaryrefslogtreecommitdiff
path: root/hacks/optimise/plotlog
diff options
context:
space:
mode:
Diffstat (limited to 'hacks/optimise/plotlog')
-rwxr-xr-xhacks/optimise/plotlog80
1 files changed, 80 insertions, 0 deletions
diff --git a/hacks/optimise/plotlog b/hacks/optimise/plotlog
new file mode 100755
index 000000000..55b6fb871
--- /dev/null
+++ b/hacks/optimise/plotlog
@@ -0,0 +1,80 @@
+#!/usr/bin/python
+
+from pylab import *
+import sys
+
+class Point:
+ def __init__(self, t, a):
+ self.time = t
+ self.awake = a
+
+decoder = []
+writer = []
+encoder = dict()
+
+f = open(sys.argv[1], 'r')
+for l in f.readlines():
+ l = l.strip()
+ s = l.split()
+ if len(s) == 0:
+ continue
+
+ t = s[0].split(':')
+ if len(t) != 2:
+ continue
+
+ secs = float(t[0]) + float(t[1]) / 1e6
+ if s[1] == 'decoder' and s[2] == 'sleeps':
+ decoder.append(Point(secs, False))
+ elif s[1] == 'decoder' and s[2] == 'wakes':
+ decoder.append(Point(secs, True))
+ elif s[1] == 'encoder' and s[2] == 'thread' and s[4] == 'finishes':
+ if s[3] not in encoder:
+ print 'new encoder %s' % s[3]
+ encoder[s[3]] = []
+ encoder[str(s[3])].append(Point(secs, False))
+ elif s[1] == 'encoder' and s[2] == 'thread' and s[4] == 'begins':
+ if s[3] not in encoder:
+ print 'new encoder %s' % s[3]
+ encoder[s[3]] = []
+ encoder[s[3]].append(Point(secs, True))
+ elif s[1] == 'writer' and s[2] == 'sleeps':
+ writer.append(Point(secs, False))
+ elif s[1] == 'writer' and s[2] == 'wakes':
+ writer.append(Point(secs, True))
+
+def do_a_plot(points, tit, pos):
+ x = []
+ y = []
+ awake = False
+ for p in points:
+ if p.awake != awake:
+ x.append(p.time)
+ y.append(int(awake) + pos)
+ x.append(p.time)
+ y.append(int(p.awake) + pos)
+ awake = p.awake
+
+ plot(x, y)
+# fill_between(x, y, 0, color='0.8')
+ title(tit)
+
+figure()
+
+N = len(encoder) + 2
+
+do_a_plot(decoder, 'dec', 0)
+do_a_plot(writer, 'wri', 1)
+
+encoder_list = []
+for k, v in encoder.iteritems():
+ encoder_list.append(v)
+
+print len(encoder_list)
+
+y = 2
+for e in encoder_list:
+ do_a_plot(e, 'enc', y)
+ y += 1
+
+show()