Skip to content

Move perf-benchmark CODE out of pygraphistry into pyg-bench; keep only contract-validated RESULTS for docs #1827

Description

@lmeyerov

The rule

Performance-benchmark code does not belong in this repo. Only results, for docs.

Owner, 2026-07-28, on merging #1826:

those scripts should live in pyg-bench, generate there & copy into pygraphistry, and then we have data contracts on both sides to ensure right format … perf benchmarks CODE do NOT belong in pygraphistry, just results for docs

Why it matters

A benchmark script living next to shipped product code is measurement machinery with no reproducible environment and no separation from the thing it measures. It invites editing the measurement to fit the claim — and this campaign has already produced three concrete instances of numbers that were wrong for exactly that class of reason:

pyg-bench owns generation; pygraphistry renders and re-verifies what it is handed.

Scope

benchmarks/ currently holds 40 files on master, including bench_ladybug_cypher.py (which #1826 just touched), bench_ladybug.py, bench_graphframes.py, the filter_pagerank/ pipelines, and ~15 index_* benchmarks.

Proposed shape

  1. Generation moves to pyg-bench. Scripts are ported, not copied — the pygraphistry copy is deleted so there is one source of truth.
  2. Results cross the boundary as data, with a contract on both sides: an exporter schema in pyg-bench and consumer validation in pygraphistry. The manifests/docs_numbers_spec.json + docs(gfql): print the benchmark numbers pyg-bench publishes, and re-verify them #1818 mechanism is the existing pattern to extend; the Ladybug cells are already flagged as not yet exported through it.
  3. Docs render only validated results — a figure with no contract-validated provenance does not get published.
  4. benchmarks/ becomes legacy: nothing new lands there while migration proceeds.

Not a blocker

This is a follow-on. In-flight PRs are unaffected and should not be held for it.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions