Created
June 24, 2020 23:04
-
-
Save natduca/18bb4a8ef3b802eda6cda054c2f2111e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# git clone https://github.com/catapult-project/catapult.git | |
# hb.py > foo | |
# $catapult/tracing/bin/trace2html foo | |
# gives you foo.html | |
text = """ | |
HHHHHHHHH HHHHHHHHH BBBBBBBBBBBBBBBBB iiii tttt hhhhhhh d::::::d JJJJJJJJJJJ iiii !!! | |
H:::::::H H:::::::H B::::::::::::::::B i::::i ttt:::t h:::::h d::::::d J:::::::::J i::::i !!:!! | |
H:::::::H H:::::::H B::::::BBBBBB:::::B iiii t:::::t h:::::h d::::::d J:::::::::J iiii !:::! | |
HH::::::H H::::::HH BB:::::B B:::::B t:::::t h:::::h d:::::d JJ:::::::JJ !:::! | |
H:::::H H:::::H aaaaaaaaaaaaa ppppp ppppppppp ppppp pppppppppyyyyyyy yyyyyyy B::::B B:::::Biiiiiiirrrrr rrrrrrrrr ttttttt:::::ttttttt h::::h hhhhh ddddddddd:::::d aaaaaaaaaaaaayyyyyyy yyyyyyy J:::::J ooooooooooo rrrrr rrrrrrrrr iiiiiii mmmmmmm mmmmmmm !:::! | |
H:::::H H:::::H a::::::::::::a p::::ppp:::::::::p p::::ppp:::::::::py:::::y y:::::y B::::B B:::::Bi:::::ir::::rrr:::::::::r t:::::::::::::::::t h::::hh:::::hhh dd::::::::::::::d a::::::::::::ay:::::y y:::::y J:::::J oo:::::::::::oo r::::rrr:::::::::r i:::::i mm:::::::m m:::::::mm !:::! | |
H::::::HHHHH::::::H aaaaaaaaa:::::ap:::::::::::::::::p p:::::::::::::::::py:::::y y:::::y B::::BBBBBB:::::B i::::ir:::::::::::::::::r t:::::::::::::::::t h::::::::::::::hh d::::::::::::::::d aaaaaaaaa:::::ay:::::y y:::::y J:::::Jo:::::::::::::::or:::::::::::::::::r i::::i m::::::::::mm::::::::::m!:::! | |
H:::::::::::::::::H a::::app::::::ppppp::::::ppp::::::ppppp::::::py:::::y y:::::y B:::::::::::::BB i::::irr::::::rrrrr::::::rtttttt:::::::tttttt h:::::::hhh::::::h d:::::::ddddd:::::d a::::a y:::::y y:::::y J:::::jo:::::ooooo:::::orr::::::rrrrr::::::ri::::i m::::::::::::::::::::::m!:::! | |
H:::::::::::::::::H aaaaaaa:::::a p:::::p p:::::p p:::::p p:::::p y:::::y y:::::y B::::BBBBBB:::::B i::::i r:::::r r:::::r t:::::t h::::::h h::::::hd::::::d d:::::d aaaaaaa:::::a y:::::y y:::::y J:::::Jo::::o o::::o r:::::r r:::::ri::::i m:::::mmm::::::mmm:::::m!:::! | |
H::::::HHHHH::::::H aa::::::::::::a p:::::p p:::::p p:::::p p:::::p y:::::y y:::::y B::::B B:::::B i::::i r:::::r rrrrrrr t:::::t h:::::h h:::::hd:::::d d:::::d aa::::::::::::a y:::::y y:::::y JJJJJJJ J:::::Jo::::o o::::o r:::::r rrrrrrri::::i m::::m m::::m m::::m!:::! | |
H:::::H H:::::H a::::aaaa::::::a p:::::p p:::::p p:::::p p:::::p y:::::y:::::y B::::B B:::::B i::::i r:::::r t:::::t h:::::h h:::::hd:::::d d:::::d a::::aaaa::::::a y:::::y:::::y J:::::J J:::::Jo::::o o::::o r:::::r i::::i m::::m m::::m m::::m!!:!! | |
H:::::H H:::::H a::::a a:::::a p:::::p p::::::p p:::::p p::::::p y:::::::::y B::::B B:::::B i::::i r:::::r t:::::t tttttth:::::h h:::::hd:::::d d:::::d a::::a a:::::a y:::::::::y J::::::J J::::::Jo::::o o::::o r:::::r i::::i m::::m m::::m m::::m !!! | |
HH::::::H H::::::HHa::::a a:::::a p:::::ppppp:::::::p p:::::ppppp:::::::p y:::::::y BB:::::BBBBBB::::::Bi::::::ir:::::r t::::::tttt:::::th:::::h h:::::hd::::::ddddd::::::dda::::a a:::::a y:::::::y J:::::::JJJ:::::::Jo:::::ooooo:::::o r:::::r i::::::im::::m m::::m m::::m | |
H:::::::H H:::::::Ha:::::aaaa::::::a p::::::::::::::::p p::::::::::::::::p y:::::y B:::::::::::::::::B i::::::ir:::::r tt::::::::::::::th:::::h h:::::h d:::::::::::::::::da:::::aaaa::::::a y:::::y JJ:::::::::::::JJ o:::::::::::::::o r:::::r i::::::im::::m m::::m m::::m !!! | |
H:::::::H H:::::::H a::::::::::aa:::ap::::::::::::::pp p::::::::::::::pp y:::::y B::::::::::::::::B i::::::ir:::::r tt:::::::::::tth:::::h h:::::h d:::::::::ddd::::d a::::::::::aa:::a y:::::y JJ:::::::::JJ oo:::::::::::oo r:::::r i::::::im::::m m::::m m::::m!!:!! | |
HHHHHHHHH HHHHHHHHH aaaaaaaaaa aaaap::::::pppppppp p::::::pppppppp y:::::y BBBBBBBBBBBBBBBBB iiiiiiiirrrrrrr ttttttttttt hhhhhhh hhhhhhh ddddddddd ddddd aaaaaaaaaa aaaa y:::::y JJJJJJJJJ ooooooooooo rrrrrrr iiiiiiiimmmmmm mmmmmm mmmmmm !!! | |
p:::::p p:::::p y:::::y y:::::y | |
p:::::p p:::::p y:::::y y:::::y | |
p:::::::p p:::::::p y:::::y y:::::y | |
p:::::::p p:::::::p y:::::y y:::::y | |
p:::::::p p:::::::p yyyyyyy yyyyyyy | |
ppppppppp ppppppppp | |
""" | |
import json | |
class Run: | |
def __init__(self, char, length): | |
self.char = char | |
self.length = length | |
def __repr__(self): | |
return "['%s', %i]" % (self.char, self.length) | |
def toSlice(self, pid, tid, startTs): | |
x = { | |
"pid": pid, | |
"tid": tid, | |
"ph": "X", | |
"name": self.char, | |
"cat": "cat", | |
"ts": startTs, | |
"dur": self.length | |
} | |
return json.dumps(x) | |
def getRuns(line): | |
if len(line) < 1: | |
return [] | |
if len(line) < 2: | |
return [Run(line[0], 1)] | |
runs = [] | |
i = 0 | |
startChar = None | |
startIdx = 0 | |
while i < len(line): | |
if startChar == None: | |
startChar = line[i] | |
startIdx = i | |
curChar = line[i] | |
if curChar == startChar: | |
i += 1 | |
continue | |
runs.append(Run(startChar, i - startIdx)) | |
startChar = None | |
if startChar != None: | |
runs.append(Run(startChar, i - startIdx)) | |
return runs | |
if False: | |
print getRuns("a") | |
import pdb; pdb.set_trace() | |
print getRuns("a a") | |
print getRuns("a a ") | |
print getRuns("a aa aaa ") | |
print """{"traceEvents": [""" | |
lines = list(text.splitlines()) | |
slices = [] | |
for tid, line in enumerate(lines): | |
runs = getRuns(line) | |
ts = 0 | |
for run in runs: | |
if run.char != ' ': | |
slices.append(run.toSlice(1, tid, ts)) | |
ts += run.length | |
print ",\n".join(slices) | |
print """]}\n""" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment