-
Notifications
You must be signed in to change notification settings - Fork 1
/
visualize.py
109 lines (100 loc) · 3.39 KB
/
visualize.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
from glob import glob
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["font.size"] = 20
plt.rcParams["font.family"] = "Times New Roman"
def read_data(FILE_NAME):
with open(FILE_NAME, "r") as f:
tmp = f.readlines()
tmp = [float(t.strip()) for t in tmp]
return tmp[:-1], tmp[-1], max(tmp[:-1])
if __name__ == "__main__":
COMPARE = [
"Sync&Rep=1",
"Sync&Rep=5",
"Async&Rep=1",
"Async&Rep=1-5",
"Async&Rep=5",
"Ensemble&Rep=1",
"Ensemble&Rep=5",
]
COLOR = {
"Sync&Rep=1": "#1f77b4",
"Sync&Rep=5": "#ff7f0e",
"Async&Rep=1": "#2ca02c",
"Async&Rep=1-5": "#d62728",
"Async&Rep=5": "#9467bd",
"Ensemble&Rep=1": "#8c564b",
"Ensemble&Rep=5": "#e377c2",
}
EACH, TOTAL = {}, {}
BINS = {"SERIAL": 0, "CONCURRENCY": 0, "RANDOM": 0}
for tmp in glob("data/*/*.txt"):
each, total, bins = read_data(tmp)
_, SERVER, CLIENT = tmp.split("/")
CLIENT = CLIENT[:-6]
if SERVER in COMPARE:
BINS[CLIENT] = max(bins, BINS[CLIENT])
if CLIENT in TOTAL.keys():
if SERVER in TOTAL[CLIENT].keys():
EACH[CLIENT][SERVER] += each
TOTAL[CLIENT][SERVER].append(total)
else:
EACH[CLIENT][SERVER] = each
TOTAL[CLIENT][SERVER] = [total]
else:
EACH[CLIENT] = {SERVER: each}
TOTAL[CLIENT] = {SERVER: [total]}
with open("data/EACH.csv", "w") as f:
for k, v in EACH.items():
fig = plt.figure(figsize=(15, 10))
bins = np.linspace(0, BINS[k], 100)
plt.grid(True)
for kk in COMPARE:
try:
vv = v[kk]
plt.hist(
vv, bins=bins, color=COLOR[kk], label=kk, alpha=0.7, zorder=10
)
f.writelines(f"{k},{kk},{sum(vv) / len(vv):.4f}\n")
except:
pass
plt.xlabel("API Response Time [Sec]")
plt.ylabel("API Response Count")
plt.legend()
plt.title(f"CLIENT: {k}")
plt.savefig(
f"figures/EACH-{k}.png",
dpi=300,
bbox_inches="tight",
pad_inches=0.3,
transparent=False,
)
with open("data/TOTAL.csv", "w") as f:
for k, v in TOTAL.items():
idx = np.linspace(-0.4, 0.4, 10)
bar_width = (idx[1] - idx[0]) * 0.95
fig = plt.figure(figsize=(25, 10))
plt.grid(True)
xt = []
i = 0
for kk in COMPARE:
try:
vv = v[kk]
plt.bar(i + idx, vv, bar_width, color=COLOR[kk], zorder=10)
f.writelines(f"{k},{kk},{sum(vv) / len(vv):.4f}\n")
xt.append(kk)
i += 1
except:
pass
plt.xlabel("Server Architecture")
plt.ylabel("Total API Response Time [Sec]")
plt.xticks(np.arange(i), xt, rotation=0)
plt.title(f"CLIENT: {k}")
plt.savefig(
f"figures/TOTAL-{k}.png",
dpi=300,
bbox_inches="tight",
pad_inches=0.3,
transparent=False,
)