30 lines
912 B
Python
30 lines
912 B
Python
import ujson
|
|
from glob import glob
|
|
import pandas as pd
|
|
from datetime import timedelta
|
|
|
|
route_info = {}
|
|
for log in glob("../logs/route_log*.json"):
|
|
name = log.split("route_log_")[1].rsplit(".", 1)[0]
|
|
data = ujson.load(open(log))
|
|
dt = data["dt"]
|
|
route_len = len(data["route"])
|
|
if route_len:
|
|
route_info[name] = (dt, route_len)
|
|
dt, route_len = route_info["beam_0"] # BFS as baseline
|
|
|
|
data = []
|
|
|
|
for name, (dt_o, l_o) in sorted(route_info.items(), key=lambda v: v[1][0] / v[1][1]):
|
|
dt_s = str(timedelta(seconds=round(dt_o, 2))).rstrip("0")
|
|
data.append(
|
|
{
|
|
"name": name,
|
|
"time": "{} ({:.2f}x)".format(dt_s, dt / dt_o),
|
|
"length": "{} (+{:.2%})".format(l_o, (l_o / route_len) - 1),
|
|
"time/hop": "{:.2} s".format(dt_o / l_o),
|
|
}
|
|
)
|
|
df = pd.DataFrame(data)
|
|
print(df.to_markdown(index=False))
|