-
Notifications
You must be signed in to change notification settings - Fork 65
/
overhead.py
48 lines (37 loc) · 1.06 KB
/
overhead.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import numpy as np
try:
get_ipython().magic('%load_ext autoreload')
get_ipython().magic('%autoreload 2')
except:
pass # ignore
import matplotlib
matplotlib.use("MacOSX")
from argparse import ArgumentParser
import json
from pathlib import Path
from typing import Dict
TraceEvent = Dict
parser = ArgumentParser()
parser.add_argument('input')
args = parser.parse_args()
path_input = args.input
# %%
data = json.loads(Path(path_input).read_text())
# just quite ugly script...
durations = []
pending_start_time = None
for e in data['traceEvents']:
if e['name'] == 'MaybePreemptRender':
if e['ph'] == 'B':
pending_start_time = e['ts']
elif e['ph'] == 'E' and pending_start_time is not None:
end_time = e['ts']
durations.append(end_time - pending_start_time)
# print(pending_start_time, end_time)
pending_start_time = None
elif e['name'] == 'PreemptRender':
pending_start_time = None
durations = np.array(durations)
print(
f'avg_per_event={np.average(durations): .2f}us'
)