Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,9 +159,9 @@ chart = xy.line_chart(
<img src="spec/assets/launch-benchmark-comparison.svg" alt="Cold-render time for a 10-million-point chart in XY, Matplotlib, and Plotly. Lower is better." width="1200">
</p>

In the recorded 10-million-point baseline, XY produced a static PNG in 0.023 s
versus 2.8 s for Matplotlib and 9.6 s for Plotly, and reached first interactive
render 16–20× sooner.
In the recorded 10-million-point baseline, XY produced a static PNG in 0.018 s
versus 2.7 s for Matplotlib and 9.6 s for Plotly, and reached first interactive
render 16–18× sooner.

That baseline is one proof point, not the finish line. XY is being built to
outperform every competing charting library across small-data startup,
Expand All @@ -172,7 +172,7 @@ the project measures and proves that goal.

The committed launch baseline uses identical seeded data, a 900×420 output,
and three isolated cold runs. See the
[launch report](benchmarks/launch_baselines/xy-0.1.0/macos-arm64-m5-pro/report.md),
[launch report](benchmarks/launch_baselines/xy-main-2026-07-26/macos-arm64-m5-pro/report.md),
[benchmark runbook](benchmarks/README.md), and
[competitive benchmark specification](spec/benchmarks/results.md) for the
environment, methodology, raw results, and full evidence program.
Expand Down
21 changes: 16 additions & 5 deletions benchmarks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,12 @@ interactive CPU fallback through SwiftShader. Each successful cell is the mean
of three complete cold-process runs; interactive samples also use a fresh
browser. Terminal 1B failures are attempted once and are not averaged.

Reproduce the 0.1.0 launch environment with its exact dependency versions:
Reproduce the launch environment with its exact dependency versions. Both
baseline directories carry the same competitor pins, so either one reproduces
the comparison environment; use the newest for a fresh run:

```bash
BASELINE=benchmarks/launch_baselines/xy-0.1.0/macos-arm64-m5-pro
BASELINE=benchmarks/launch_baselines/xy-main-2026-07-26/macos-arm64-m5-pro
uv sync --project "$BASELINE" --frozen --python 3.14.5
```

Expand All @@ -63,9 +65,18 @@ uv run --project "$BASELINE" --frozen python benchmarks/bench_launch_scatter.py
```

The immutable 0.1.0 launch baseline, report, and raw results live under
`benchmarks/launch_baselines/xy-0.1.0/macos-arm64-m5-pro/`. Add a new
version/environment directory for later launches; never overwrite an earlier
launch baseline or mix hardware and SwiftShader rows.
`benchmarks/launch_baselines/xy-0.1.0/macos-arm64-m5-pro/`. The 2026-07-26 rerun
that the README and public benchmarks page quote lives under
`benchmarks/launch_baselines/xy-main-2026-07-26/macos-arm64-m5-pro/`; it repeats
the same contracts against the same pinned competitor versions on the same
machine. Add a new version/environment directory for later launches; never
overwrite an earlier launch baseline or mix hardware and SwiftShader rows.

Warm the checkout before a measured run. A first invocation in a fresh worktree
pays for cold bytecode caches, Matplotlib's font cache, and Kaleido's browser
download, which inflate every library's first row by an amount that is not part
of any output contract. Run the suite once and discard it; publish the run after
it.

## CI Software GL

Expand Down
Loading
Loading