test out profiling
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
import pandas as pd
|
||||
import plotly.graph_objs as go
|
||||
|
||||
call_depths = [0]
|
||||
datas = []
|
||||
|
||||
def ensure_big_enough(list, idx, el):
|
||||
l = len(list)
|
||||
if (idx >= l):
|
||||
list.extend([el]*(idx-l+1))
|
||||
|
||||
def incr_call_depth(thread):
|
||||
ensure_big_enough(call_depths, thread, 0)
|
||||
call_depths[thread] += 1
|
||||
|
||||
def append_to_datas(thread, data):
|
||||
ensure_big_enough(datas, thread, [])
|
||||
datas[thread].append(data)
|
||||
|
||||
with open("../bin/profiler.report", "r") as file:
|
||||
for line in file:
|
||||
infos = line.split()
|
||||
thread = int(infos[0])
|
||||
if infos[1] == "->":
|
||||
incr_call_depth(thread)
|
||||
append_to_datas(thread, {
|
||||
"task": f"[T{thread}] - {'{:03d}'.format(call_depths[thread])}",
|
||||
"start": int(infos[5]),
|
||||
"end": None
|
||||
})
|
||||
elif infos[1] == "<-":
|
||||
call_depths[thread] -= 1
|
||||
for set in datas[thread][::-1]:
|
||||
if set["end"] == None:
|
||||
set["end"] = int(infos[2])
|
||||
break
|
||||
else:
|
||||
print("couldn't find task that finished")
|
||||
break
|
||||
|
||||
else:
|
||||
print("neither -> nor <-")
|
||||
|
||||
|
||||
fig = go.Figure(
|
||||
layout = {
|
||||
'barmode': 'stack',
|
||||
"dragmode" : "pan",
|
||||
}
|
||||
)
|
||||
|
||||
flat_datas= [item for sublist in datas for item in sublist]
|
||||
# i = 1
|
||||
# df = flat_datas[:20]
|
||||
# for call in df:
|
||||
# name = call["task"]
|
||||
# start = call["start"]
|
||||
# end = call["end"]
|
||||
# duration = end,start
|
||||
# fig.add_bar(x=(i,duration),
|
||||
# y=(i,name),
|
||||
# base=(i,start),
|
||||
# orientation='h',
|
||||
# showlegend=False,
|
||||
# name=name,
|
||||
# hovertext=f"yes",
|
||||
# text=""
|
||||
# )
|
||||
# i += 1
|
||||
|
||||
df = pd.DataFrame(flat_datas[:20])
|
||||
df['duration'] = df['end'] - df['start']
|
||||
|
||||
for stackdepth, stackdepth_df in df.groupby('task'):
|
||||
params = {"x": stackdepth_df.duration,
|
||||
"y": stackdepth_df.task,
|
||||
"name": stackdepth,
|
||||
"base": stackdepth_df.start
|
||||
}
|
||||
print(params)
|
||||
fig.add_bar(**params,
|
||||
orientation='h',
|
||||
showlegend=False,
|
||||
hovertext=f"yes",
|
||||
text=""
|
||||
)
|
||||
|
||||
|
||||
fig.show(config={'scrollZoom': True})
|
||||
Reference in New Issue
Block a user