summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Ahltorp <map@kth.se>2015-11-12 11:45:53 +0100
committerMagnus Ahltorp <map@kth.se>2015-11-12 11:45:53 +0100
commit29104c1a8213845957aad3c536582e944de0e85c (patch)
tree73130236fc82227db703b802794b03a7b966e1fe
parentbf7a293a18f104a0bf625934bcdb000136e1ac5f (diff)
Parse benchmark output
-rwxr-xr-xtools/parsebench.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/tools/parsebench.py b/tools/parsebench.py
new file mode 100755
index 0000000..acf018a
--- /dev/null
+++ b/tools/parsebench.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2014, NORDUnet A/S.
+# See LICENSE for licensing information.
+
+import argparse
+import sys
+import ast
+import itertools
+
+def parse_one_line(line):
+ row = line.rstrip().split(":")
+ assert row[0].startswith("mergeoutput.")
+ iteration = int(row[0][12:])
+ stage = row[2].strip()
+ data = ast.literal_eval(row[3].strip())
+ return (iteration, stage, data)
+
+def main():
+ parser = argparse.ArgumentParser(description="")
+ parser.add_argument('inputfile', help="Input file")
+ args = parser.parse_args()
+ lines = [parse_one_line(line) for line in open(args.inputfile)]
+ iterations = itertools.groupby(lines, lambda x: x[0])
+ print "<!DOCTYPE html>"
+ print "<html>"
+ print "<head>"
+ print "</head>"
+ print "<body>"
+ print "<div>"
+ legend = []
+ for (i, iteration) in iterations:
+ print "<table><tr>"
+ for (stagen, (_, stage, data)) in enumerate(iteration):
+ if i == 0:
+ legend.append("<div><span>%s</span>" % (stage,))
+ data = list(data)
+ for (itemn, (item, useconds)) in enumerate(data):
+ seconds = useconds / 1000000
+ step = 50 / (len(data) - 1)
+ print "<td style='width: %dpx; padding: 0; background-color: hsl(%d, 90%%, %d%%);' title='%s:%s'>" % (seconds, stagen * 90, itemn * step + 40, stage, item)
+ if i == 0:
+ legend.append("<span style='background-color: hsl(%d, 90%%, %d%%);'>%s</span>" % (stagen * 90, itemn * step + 40, item))
+ print "&nbsp;"
+ print "</td>"
+ if i == 0:
+ legend.append("</div>")
+ print "</tr></table>"
+ print "</div>"
+ print "<div style='height: 30px;'>"
+ print "</div>"
+ print "<div>"
+ for row in legend:
+ print row
+ print "</div>"
+ print "</body>"
+ print "</html>"
+
+main()