mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-14 12:23:43 +00:00
21 lines
1.0 KiB
Python
21 lines
1.0 KiB
Python
#!/usr/bin/env python3
|
|
"""Summarize saved Go benchmark samples; times are medians, not best runs."""
|
|
import json
|
|
from pathlib import Path
|
|
import re
|
|
import statistics
|
|
|
|
root = Path(__file__).resolve().parent
|
|
samples = {}
|
|
for line in (root/'results/bench.txt').read_text().splitlines():
|
|
match = re.match(r'(Benchmark\S+)\s+\d+\s+([\d.]+) ns/op\s+([\d.]+) B/op\s+([\d.]+) allocs/op',line)
|
|
if match:
|
|
key, *values = match.groups()
|
|
samples.setdefault(key, []).append(list(map(float,values)))
|
|
summary = {}
|
|
for key, rows in samples.items():
|
|
summary[key] = dict(samples=len(rows),ns_median=statistics.median(r[0] for r in rows),ns_min=min(r[0] for r in rows),ns_max=max(r[0] for r in rows),bytes_median=statistics.median(r[1] for r in rows),allocs_median=statistics.median(r[2] for r in rows))
|
|
(root/'results/bench-summary.json').write_text(json.dumps(summary,indent=2)+'\n')
|
|
for key, row in summary.items():
|
|
print(f'{key}: {row["ns_median"]/1e6:.3f} ms/op; {row["bytes_median"]/1024:.1f} KiB/op; samples={row["samples"]}')
|