mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-15 17:32:56 +00:00
64 lines
1.9 KiB
Python
Executable File
64 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env -S python3 -u
|
|
|
|
import argparse
|
|
import json
|
|
import os
|
|
from pprint import pprint
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
parser = argparse.ArgumentParser(prog="compression-report")
|
|
parser.add_argument("dir")
|
|
args = parser.parse_args()
|
|
|
|
files = []
|
|
for file_name in os.listdir(args.dir):
|
|
if not file_name.endswith(".json"):
|
|
continue
|
|
file_path = os.path.join(args.dir, file_name)
|
|
with open(file_path) as json_str:
|
|
json_data = json.load(json_str)
|
|
files.append((file_name, json_data))
|
|
#pprint(files)
|
|
|
|
extra_zstd_lines = True
|
|
dc = 2 # data column to use (1 for sizes, 2 for time)
|
|
sort_by = "ZstdHigh"
|
|
files.sort(key=lambda file_data: [x for x in file_data[1] if x[0] == sort_by][0][dc])
|
|
|
|
|
|
x_axis = []
|
|
data_baseline = []
|
|
data_lz4 = []
|
|
data_zstd = []
|
|
data_zstd_low = []
|
|
data_zstd_high = []
|
|
|
|
for idx, f in enumerate(files):
|
|
file_data = f[1]
|
|
#pprint(file_data)
|
|
|
|
x_axis.append(idx)
|
|
data_baseline.append([x for x in file_data if x[0] is None][0][dc])
|
|
data_lz4.append([x for x in file_data if x[0] == "LZ4"][0][dc])
|
|
data_zstd.append([x for x in file_data if x[0] == "Zstd"][0][dc])
|
|
if extra_zstd_lines:
|
|
data_zstd_low.append([x for x in file_data if x[0] == "ZstdLow"][0][dc])
|
|
data_zstd_high.append([x for x in file_data if x[0] == "ZstdHigh"][0][dc])
|
|
|
|
plt.plot(x_axis, data_baseline, "x", markeredgewidth=2, label="baseline")
|
|
plt.plot(x_axis, data_lz4, "x", markeredgewidth=2, label="lz4")
|
|
plt.plot(x_axis, data_zstd, "x", markeredgewidth=2, label="Zstd")
|
|
if extra_zstd_lines:
|
|
plt.plot(x_axis, data_zstd_low, "x", markeredgewidth=2, label="ZstdLow")
|
|
plt.plot(x_axis, data_zstd_high, "x", markeredgewidth=2, label="ZstdHigh")
|
|
|
|
# plt.style.use('_mpl-gallery')
|
|
plt.ylim(bottom=0)
|
|
plt.legend(loc="upper left")
|
|
|
|
figure_path = os.path.join(args.dir, "figure.png")
|
|
print(f"saving figure to {figure_path}")
|
|
plt.savefig(figure_path)
|
|
plt.show()
|