()
| 257 | |
| 258 | |
| 259 | def main() -> None: |
| 260 | parser = argparse.ArgumentParser( |
| 261 | description="Benchmark openquant.data with per-function throughput and latency metrics." |
| 262 | ) |
| 263 | parser.add_argument("--rows-per-symbol", type=int, default=200_000) |
| 264 | parser.add_argument("--symbols", type=int, default=4) |
| 265 | parser.add_argument("--iterations", type=int, default=7) |
| 266 | parser.add_argument("--out", type=Path, default=None) |
| 267 | parser.add_argument("--baseline", type=Path, default=None) |
| 268 | args = parser.parse_args() |
| 269 | |
| 270 | result = run_benchmarks( |
| 271 | rows_per_symbol=args.rows_per_symbol, |
| 272 | symbols=args.symbols, |
| 273 | iterations=args.iterations, |
| 274 | ) |
| 275 | |
| 276 | print("Core Data Functions") |
| 277 | print(result["tables"]["core"]) |
| 278 | print() |
| 279 | print("I/O + End-to-End Load") |
| 280 | print(result["tables"]["io"]) |
| 281 | print() |
| 282 | |
| 283 | if args.baseline is not None: |
| 284 | diff_rows = _compare_against_baseline( |
| 285 | [BenchStats(**row) for row in result["functions"]], |
| 286 | args.baseline, |
| 287 | ) |
| 288 | result["baseline_comparison"] = diff_rows |
| 289 | if diff_rows: |
| 290 | print("Baseline Comparison (mean_ms regression; negative is faster)") |
| 291 | for row in diff_rows: |
| 292 | print( |
| 293 | f"{row['name']}: baseline={row['baseline_mean_ms']:.2f}ms " |
| 294 | f"current={row['current_mean_ms']:.2f}ms " |
| 295 | f"regression_pct={row['regression_pct']:+.2f}%" |
| 296 | ) |
| 297 | print() |
| 298 | |
| 299 | if args.out is not None: |
| 300 | args.out.parent.mkdir(parents=True, exist_ok=True) |
| 301 | args.out.write_text(json.dumps(result, indent=2), encoding="utf-8") |
| 302 | print(f"wrote benchmark metrics to {args.out}") |
| 303 | |
| 304 | |
| 305 | if __name__ == "__main__": |
no test coverage detected