Skip to content

bench(gfql): fair same-HW cross-DB competitor matrix runners (Kuzu/Memgraph/Neo4j/Pokec)#1704

Open
lmeyerov wants to merge 2 commits into
perf/gfql-olap-real-q1q9from
bench/gfql-fair-matrix
Open

bench(gfql): fair same-HW cross-DB competitor matrix runners (Kuzu/Memgraph/Neo4j/Pokec)#1704
lmeyerov wants to merge 2 commits into
perf/gfql-olap-real-q1q9from
bench/gfql-fair-matrix

Conversation

@lmeyerov

@lmeyerov lmeyerov commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

What

Consolidates the competitor benchmark harnesses onto the index/bench stack (they were misplaced on the cypher-conformance branch). Each competitor runs via its own prrao87/graph-benchmark repo query — the fairness fix (our hand-written queries undersold Kuzu ~90×).

New runners

graph_benchmark_{kuzu,memgraph_q1_q9,memgraph_neighbors,neo4j_q1_q9,pokec}.py, graph_benchmark_{compare,polars_q5_q7}.py, graph_benchmark_{expansion,ldbc,neighbors,path,pattern,planner}_probe.py, run_graph_benchmark_memgraph_dgx.sh, docs/source/gfql/benchmark_memgraph.rst. graph_benchmark_q1_q9.py gains the q1 columnar in-degree shortcut + per-query policy metadata. README/RESULTS/graph_benchmark.md union-merged with the stack's index-harness docs.

Scope

Bench-only — no graphistry/ source (the shortestPath-cache perf commit is split to a separate PR). Runnable on dgx via dgx-guard/safe_run.sh.

Fair-matrix findings (dgx, q1–q9, 100k/2.42M FOLLOWS)

  • Real repo-query medians: Kuzu q8 10.4ms / Ladybug q8 19.5ms are genuine WINs (factorized WCOJ path-count).
  • GFQL wins q1 (cuDF 19.7ms via the shortcut, beats Kuzu 253ms) / q2 / q4–q7 / q9 (GPU).
  • Pokec seeded (Memgraph's benchmark): GFQL wins 8/8 via native indexed hop (feat(gfql): physical adjacency indexes for O(degree) seeded traversal #1658 payoff).
  • Pending in follow-ups: Neo4j+Memgraph repo-query runs, Lance-graph, GFQL polars/polars-gpu, seeded across DBs.

🤖 Generated with Claude Code

@lmeyerov lmeyerov force-pushed the bench/gfql-fair-matrix branch 4 times, most recently from 2645ed8 to 33e5a58 Compare July 8, 2026 02:03
@lmeyerov lmeyerov changed the base branch from feat/gfql-index-degrees to perf/gfql-row-pushdown July 8, 2026 02:03
@lmeyerov lmeyerov force-pushed the perf/gfql-row-pushdown branch from 90db1e3 to ed6e12c Compare July 8, 2026 03:14
@lmeyerov lmeyerov force-pushed the bench/gfql-fair-matrix branch 2 times, most recently from 62ffb7f to 25bfd21 Compare July 8, 2026 03:31
@lmeyerov lmeyerov force-pushed the bench/gfql-fair-matrix branch from 25bfd21 to 481e66c Compare July 8, 2026 08:02
@lmeyerov lmeyerov changed the base branch from perf/gfql-row-pushdown to perf/gfql-olap-real-q1q9 July 8, 2026 08:03
@lmeyerov lmeyerov force-pushed the bench/gfql-fair-matrix branch from 481e66c to 42c8726 Compare July 8, 2026 08:55
@lmeyerov lmeyerov force-pushed the perf/gfql-olap-real-q1q9 branch from dc01f38 to c7b5c71 Compare July 8, 2026 08:55
@lmeyerov lmeyerov force-pushed the bench/gfql-fair-matrix branch from 42c8726 to da2cd7a Compare July 8, 2026 09:01
@lmeyerov lmeyerov force-pushed the perf/gfql-olap-real-q1q9 branch 2 times, most recently from ea3fcd9 to 36cf2ff Compare July 9, 2026 01:05
@lmeyerov lmeyerov force-pushed the bench/gfql-fair-matrix branch from da2cd7a to 9f10199 Compare July 9, 2026 01:06
@lmeyerov lmeyerov force-pushed the perf/gfql-olap-real-q1q9 branch from 36cf2ff to cc531c4 Compare July 9, 2026 01:47
@lmeyerov lmeyerov force-pushed the bench/gfql-fair-matrix branch from 9f10199 to ed8a3ba Compare July 9, 2026 01:47
@lmeyerov lmeyerov force-pushed the perf/gfql-olap-real-q1q9 branch from cc531c4 to 180ad49 Compare July 9, 2026 02:09
@lmeyerov lmeyerov force-pushed the bench/gfql-fair-matrix branch from ed8a3ba to ed09beb Compare July 9, 2026 02:10
@lmeyerov lmeyerov force-pushed the perf/gfql-olap-real-q1q9 branch from 180ad49 to f7cc095 Compare July 9, 2026 02:42
@lmeyerov lmeyerov force-pushed the bench/gfql-fair-matrix branch from ed09beb to a7fb73f Compare July 9, 2026 02:42
@lmeyerov lmeyerov force-pushed the perf/gfql-olap-real-q1q9 branch from f7cc095 to b09397f Compare July 9, 2026 02:50
@lmeyerov lmeyerov force-pushed the bench/gfql-fair-matrix branch from a7fb73f to 81d0ed9 Compare July 9, 2026 02:51
@lmeyerov lmeyerov force-pushed the perf/gfql-olap-real-q1q9 branch from b09397f to 321fe95 Compare July 9, 2026 04:07
lmeyerov and others added 2 commits July 8, 2026 21:08
…mgraph/Neo4j/Pokec)

Consolidates the competitor benchmark harnesses onto the index/bench stack (were
misplaced on the cypher-conformance branch). Each competitor runs via its OWN
graph-benchmark repo query (the fairness fix — hand-written queries undersold
Kuzu ~90x). New runners: graph_benchmark_{kuzu,memgraph_q1_q9,neo4j_q1_q9,pokec,
memgraph_neighbors}.py + {compare,polars_q5_q7}.py + {expansion,ldbc,neighbors,
path,pattern,planner}_probe.py + run_graph_benchmark_memgraph_dgx.sh +
docs/source/gfql/benchmark_memgraph.rst. graph_benchmark_q1_q9.py gains the q1
columnar in-degree shortcut + per-query policy metadata. README/RESULTS/
graph_benchmark.md union-merged with the stack's index-harness docs.

Bench-only (no graphistry/ source); the shortestPath-cache perf commit is split
out for a separate PR. Fair-matrix real medians (dgx, q1-q9 100k/2.4M): Kuzu q8
10.4ms / Ladybug q8 19.5ms are genuine WINs; GFQL wins q1(cuDF 19.7ms via the
shortcut)/q2/q4-q7/q9(GPU); Pokec seeded GFQL 8/8 via native indexed hop.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012rRBmezaBEi2CJgDGkMNgR
@lmeyerov lmeyerov force-pushed the bench/gfql-fair-matrix branch from 81d0ed9 to b35a0ec Compare July 9, 2026 04:09
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