MCPcopy Create free account
hub / github.com/Open-Quant/openquant / main

Function main

scripts/check_bench_thresholds.py:12–61  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

10
11
12def main():
13 parser = argparse.ArgumentParser(description="Fail if benchmark regressions exceed threshold")
14 parser.add_argument("--baseline", default="benchmarks/baseline_benchmarks.json")
15 parser.add_argument("--latest", default="benchmarks/latest_benchmarks.json")
16 parser.add_argument("--max-regression-pct", type=float, default=25.0)
17 parser.add_argument("--min-baseline-ms", type=float, default=0.05)
18 parser.add_argument(
19 "--overrides",
20 default=None,
21 help=(
22 "Optional JSON file mapping benchmark name -> max regression percent override "
23 "(e.g. {\"synthetic_ticker_pipeline_end_to_end\": 50.0})"
24 ),
25 )
26 args = parser.parse_args()
27
28 baseline = load(Path(args.baseline))
29 latest = load(Path(args.latest))
30 overrides = load(Path(args.overrides)) if args.overrides else {}
31
32 base = baseline.get("benchmarks", {})
33 curr = latest.get("benchmarks", {})
34
35 regressions = []
36 checked = 0
37 for name, b in base.items():
38 if name not in curr:
39 continue
40 b_ms = b["mean_ms"]
41 c_ms = curr[name]["mean_ms"]
42 if b_ms < args.min_baseline_ms:
43 continue
44 checked += 1
45 delta_pct = ((c_ms - b_ms) / b_ms) * 100.0
46 threshold_pct = float(overrides.get(name, args.max_regression_pct))
47 if delta_pct > threshold_pct:
48 regressions.append((name, b_ms, c_ms, delta_pct, threshold_pct))
49
50 print(f"checked {checked} benchmarks against baseline")
51 if regressions:
52 print("regressions above threshold:")
53 for name, b_ms, c_ms, d, t in regressions:
54 print(
55 f"- {name}: baseline={b_ms:.3f}ms latest={c_ms:.3f}ms "
56 f"delta={d:.1f}% threshold={t:.1f}%"
57 )
58 return 1
59
60 print("no benchmark regressions above threshold")
61 return 0
62
63
64if __name__ == "__main__":

Callers 1

Calls 2

loadFunction · 0.85
appendMethod · 0.80

Tested by

no test coverage detected