summaryrefslogtreecommitdiff
path: root/tools/parsebench.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/parsebench.py')
-rwxr-xr-xtools/parsebench.py62
1 files changed, 45 insertions, 17 deletions
diff --git a/tools/parsebench.py b/tools/parsebench.py
index 96c36d6..6897b57 100755
--- a/tools/parsebench.py
+++ b/tools/parsebench.py
@@ -10,8 +10,8 @@ import itertools
def parse_one_line(line):
row = line.rstrip().split(":")
- assert row[0].startswith("mergeoutput.")
- iteration = int(row[0][12:])
+ assert row[0].startswith("bench-")
+ iteration = int(row[0][6:])
stage = row[2].strip()
data = ast.literal_eval(row[3].strip())
return (iteration, stage, data)
@@ -30,35 +30,63 @@ def main():
print "</body>"
print "</html>"
+scale = 0.25
+
def parse_one_file(filename):
lines = [parse_one_line(line) for line in open(filename)]
iterations = itertools.groupby(lines, lambda x: x[0])
print "<h1>%s</h1>" % (filename,)
print "<div>"
- legend = []
+ firsttime = True
+
+ stageorderdict = {}
+ stageorder = []
+ stages = {}
+ itemorder = {}
+
+ for (i, iteration) in iterations:
+ for (_, stage, data) in iteration:
+ if stage not in stages:
+ stageorderdict[stage] = len(stageorderdict)
+ stageorder.append(stage)
+ stages[stage] = {}
+ itemorder[stage] = []
+ for (item, useconds) in data:
+ if item not in stages[stage]:
+ itemorder[stage].append(item)
+ stages[stage][item] = len(stages[stage])
+
+ iterations = itertools.groupby(lines, lambda x: x[0])
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,))
+ print >>sys.stderr, (i, iteration)
+ sys.stdout.write("<div style='margin-bottom: 1em;'>")
+ for (_, stage, data) in iteration:
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 %d'>" % (seconds/4, stagen * 90, itemn * step + 40, stage, item, seconds)
- if i == 0:
- legend.append("<span style='background-color: hsl(%d, 90%%, %d%%);'>%s</span>" % (stagen * 90, itemn * step + 40, item))
+ shades = stages[stage]
+ step = 50 / (len(shades) - 1)
+ shade = shades[item]
+ stagen = stageorderdict[stage]
+ print "<div class='element' style='display: inline-block; margin: 0; width: %dpx; padding: 0; background-color: hsl(%d, 90%%, %d%%);' title='%s:%s %d'>" % (int(seconds*scale), stagen * 90, shade * step + 40, stage, item, seconds)
print "&nbsp;"
- print "</td>"
- if i == 0:
- legend.append("</div>")
- print "</tr></table>"
+ sys.stdout.write("</div>")
+ sys.stdout.write("</div>")
print "</div>"
print "<div style='height: 30px;'>"
print "</div>"
print "<div>"
- for row in legend:
- print row
+
+ for stage in stageorder:
+ print "<div><span>%s</span>" % (stage,)
+ shades = stages[stage]
+ for item in itemorder[stage]:
+ shade = shades[item]
+ step = 50 / (len(shades) - 1)
+
+ stagen = stageorderdict[stage]
+ print "<span style='background-color: hsl(%d, 90%%, %d%%);'>%s</span>" % (stagen * 90, shade * step + 40, item)
+ print "</div>"
print "</div>"
main()