feat(ci): add a manual public benchmark workflow - #197
Merged
Merged
Conversation
benchmarks/public_benchmark.py runs the two existing harnesses in subprocesses - bench_report.py (CSV ingest, profile, null-fill, import time, peak memory; balanced vs aggressive) and bench.py run/report (the per-fixture table) - and writes one shareable public-benchmark.md/.json stamped with the freshdata version, commit, CPU/RAM and package versions. `--scale ci` (default) keeps the scaling cases inside a hosted runner; `--scale full` uses the harness defaults. .github/workflows/public-benchmark.yml is workflow_dispatch only (scale and repeat inputs), installs from constraints/ci.txt, appends the report to the job summary and uploads it as public-benchmark-<run id>. It never runs on push or pull requests. docs/benchmarks.md explains how to refresh.
Contributor
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
FreshData benchmark report —
|
| fixture | n_rows | n_cols | p50 s | p95 s | peak MB | repair % | false-repair % | preserve % | trust | monotonic | export % |
|---|
Authored-code reduction (Metric 6)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #4.
Summary
#4 asked for a manually triggered workflow whose artifact holds the benchmark table and the freshdata version, and that never blocks CI. The script it named (
benchmarks/public_benchmark.py) didn't exist, and the "Strategic-report scaling benchmarks" table indocs/benchmarks.mdstill reads not yet measured.benchmarks/public_benchmark.pyA thin orchestrator with no new measurement code. It runs the existing harnesses in subprocesses:
benchmarks/bench_report.py allcovers the scaling cases (CSV ingest + clean, mixed-schema profile, null-fill, import time, peak memory), balanced vs aggressive.benchmarks/bench.py run --repeat N+reportproduces the per-fixture speed/quality table.It writes
public-benchmark.mdandpublic-benchmark.json, stamped with the freshdata version, commit, CPU count and RAM, Python and platform, and pandas/numpy/pyarrow/polars/duckdb versions.Flags:
--scale ci(default: 50 MB CSV, 1M rows), sized for a 2-core / 7 GB hosted runner--scale full(harness defaults, incl. 10M-row null-fill)--csv-mb,--rows,--repeat,--size,--skip-scaling,--skip-fixtures,--output-dir.github/workflows/public-benchmark.ymlworkflow_dispatchonly, withscale(ci/full) andrepeatinputs. It never runs on push or pull requests, so it can't block CI.-c constraints/ci.txt. Actions are SHA-pinned,contents: read, 120-minute timeout.public-benchmark-<run id>(md, json,report_bench.json).docs/benchmarks.mdgains a short "Refreshing the public numbers" section.Verification
tests/benchmark/test_public_benchmark.py(8 tests):ci/full,--skip-scaling, both-skipped error)workflow_dispatchonly, uploads an artifactruff checkclean; the workflow parses as YAML.python benchmarks/public_benchmark.py --csv-mb 1 --rows 20000 --repeat 1 --size 2000completed in about 18s. It rendered all five scaling rows and six fixture rows under the freshdata 2.0.0 / commit / hardware header, and wrote nothing outside the git-ignoredbenchmarks/results/.Once this merges, run
gh workflow run public-benchmark.ymlfor the first hosted numbers.