import re,glob,statistics as st,sys
rows={}
for f in sorted(glob.glob(sys.argv[1]+"/server-*-d*.log")):
    key=re.sub(r".*server-(.*)-d\d\.log",r"\1",f)
    txt=open(f,encoding="utf-8",errors="replace").read().replace("\r","\n")
    last=None; first=True
    for line in txt.split("\n"):
        m=re.search(r"(\d+)/(\d+) \[[^\]]*?,\s*([\d.]+)(it/s|s/it)\]",line)
        if m and m.group(1)==m.group(2):
            v=float(m.group(3)); steps=int(m.group(2))
            last=(steps/v if m.group(4)=="it/s" else steps*v, steps)
        m2=re.search(r"Prompt executed in ([\d.]+) seconds",line)
        if m2:
            tot=float(m2.group(1))
            if first:
                first=False; last=None; continue
            if last: rows.setdefault(key,[]).append((tot,last[0],last[1]))
            last=None
print("%-22s%4s%9s%11s%8s%6s"%("model","n","total","sampler","rest","steps"))
for k,v in rows.items():
    t=st.median([a for a,b,c in v]); s=st.median([b for a,b,c in v])
    print("%-22s%4d%9.3f%11.3f%8.3f%6d"%(k,len(v),t,s,t-s,v[0][2]))
