research: evaluate moejs extension compatibility and performance

This commit is contained in:
Levi committed 2026-11-14 13:28:06 +08:00
1 parent be0a395447
commit 941fda7d13
29 files changed
+1688

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
#!/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"]}')