Skip to content

test(gfql): latency contract pins for basic Cypher shapes (pandas/polars/cuDF) - #2031

Merged
lmeyerov merged 3 commits into
masterfrom
test/gfql-latency-contract
Sep 5, 2026
Merged

lmeyerov merged 3 commits into
masterfrom
test/gfql-latency-contract

Conversation

@lmeyerov

@lmeyerov lmeyerov commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Stacked on #2030 (needs the node-dtype memo for the pandas ratios to hold).

Adds graphistry/tests/compute/gfql/test_gfql_latency_contract.py: for three basic shapes on a wide 300k-node × 30 object-column table (100k Person, 200k Message, HAS_CREATOR edges) it pins, per engine (pandas, polars, cuDF):

  1. gfql_explain reports a fast path served, and
  2. the Cypher form costs < 12× the native chain form of the same lookup (machine-independent ratio, best-of-5 warm).
shape pandas polars cuDF
seeded typed 1-hop + props 1.1× served 0.3× served 1.1× served
seeded typed 1-hop + whole entity 3.0× served 0.3× served 1.3× served
node-only seed + props 27× xfail 3.2× (not served, xfail) 7.7× (not served, xfail)

Known gaps are xfail(strict=True) so the fix PR (plan T2.10.2) flips them rather than passing silently. Local numbers above are from an RTX 3080 Ti box and are not published anywhere; the absolute sub-10 ms thresholds live in the private pyg-bench sentinel on the real SF0.1 fixture.

Registered in bin/test-polars.sh for lane completeness. Local: 13 passed, 4 xfailed across the three engines.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1

lmeyerov and others added 3 commits September 4, 2026 14:25
Fast-path served pins plus cypher/native ratio pins (12x) on a wide 300k x 30
object-column node table for pandas, polars and cuDF. Node-only seeded lookup
with projections is a strict xfail (known gap, plan T2.10.2).

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…ly, interleaved

Review wave 1: the native chain is not a floor on polars (slower than the Cypher form), so
the ratio pin now compares against an id mask plus one join per hop on the same frames,
measured interleaved, and runs only for shapes the served pin expects to be served; engine
imports via importorskip; slug param ids; no numbers in reasons.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant