-
Notifications
You must be signed in to change notification settings - Fork 0
/
plot_benches.py
67 lines (57 loc) · 2.66 KB
/
plot_benches.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
import numpy as np
import pandas
import matplotlib.pyplot as plt
import seaborn as sns
MARKERS = ['o', '*', '^']
def analysis(tree_size, tree_types, folder, overall_fig_name, compare_fig_name):
marker = MARKERS[:len(tree_types)]
mean_values = []
fig, all_ax = plt.subplots(3, 2, figsize=(12, 16))
for i, size in enumerate(tree_size):
data_to_plot = []
for type in tree_types:
data = pandas.read_csv("../target/criterion/{}/{}/{}/base/raw.csv".format(folder, type, i))
times = np.array(data['sample_measured_value'].to_list())
# delta_times = times[1:] - times[:-1]
counts = np.array(data['iteration_count'].to_list())
# delta_counts = counts[1:] - counts[:-1]
values = times / counts
data_to_plot.append(values)
mean_values.append([d.mean() for d in data_to_plot])
# fig, ax = plt.subplots(figsize=(10, 8))
ax = all_ax.item(i)
ax.violinplot(data_to_plot, showextrema=False, showmedians=True)
ax.set_xticks(np.arange(len(tree_types)).astype(np.int) + 1)
ax.set_xticklabels(tree_types)
ax.set_ylabel("time({})".format(data['unit'][0]), fontsize=10)
ax.xaxis.set_tick_params(labelsize=10)
ax.yaxis.set_tick_params(labelsize=6)
ax.set_title("Tree Size = {}".format(size), fontsize=12)
# plt.show()
# plt.savefig("../target/criterion/{}.png".format(size))
all_ax[-1, -1].axis('off')
# plt.savefig("../target/criterion/compare.png")
plt.savefig("../target/criterion/{}.png".format(compare_fig_name))
# plt.show()
fig, ax = plt.subplots(figsize=(10, 8))
mean_values = np.array(mean_values)
for i, (type, m) in enumerate(zip(tree_types, marker)):
ax.plot(mean_values[:, i], label=type, marker=m)
ax.set_xlabel("Tree Size", fontsize=20)
ax.set_ylabel("Time(ns)", fontsize=20)
plt.xticks(np.arange(len(tree_size)).astype(np.int), tree_size)
ax.xaxis.set_tick_params(labelsize=13)
ax.yaxis.set_tick_params(labelsize=13)
plt.legend(loc="upper left", prop={'size': 20})
# plt.show()
plt.savefig("../target/criterion/{}.png".format(overall_fig_name))
def main():
tree_size = [10000, 40000, 70000, 100000, 130000]
tree_types = ["BST", "AVL", "RBT"]
analysis(tree_size, tree_types, "Compare_10Sample", "overall_10_sample", "compare_10_sample")
tree_types = ["AVL", "RBT"]
analysis(tree_size, tree_types, "Compare", "overall", "compare")
tree_types = ["BST", "AVL", "RBT"]
analysis(tree_size, tree_types, "Compare_insert_delete", "overall_insert_delete", "compare_insert_delete")
if __name__ == '__main__':
main()