perf(gfql): whole-column aggregates trail a columnar scan at 1M+ nodes (Pokec mgBench)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- python
- Ambito
- performance
Direzione di ricerca
Start with the GFQL Cypher-to-aggregate lowering and profile the four named Pokec mgBench global-aggregate queries at 1.63M nodes, comparing the results with the receipted Kuzu lane. Follow the standard probe → profile pass and record performance receipts to pyg-bench per measurement-rules; done means identifying and addressing the aggregate-path gap, with measurements showing the effect.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Receipted gap
The four Pokec mgBench global-aggregate queries (not GraphBench qN — these are mgBench's own names/text, run verbatim): aggregate (MATCH (n:User) RETURN n.age, COUNT(*)), aggregate_with_distinct (COUNT(DISTINCT n.age)), aggregate_with_filter (WHERE n.age >= 18 + group), min_max_avg (min/max/avg(n.age)). GFQL best-of-4-engines vs embedded Kuzu, receipted lanes (pyg-bench pokec-gfql-relane-20260813 + pokec-kuzu-20260812):
- 100k nodes: ~1 ms margins either way (aggregate 0.9x, min_max_avg 0.7x, with_filter TIE, with_distinct GFQL 1.3x)
- 1.63M nodes: all four cells LOSE 0.2–0.3x — Kuzu's columnar scan stays ~3 ms while GFQL's best arm grows to 7–13 ms
Same lanes: GFQL wins every seeded traversal cell 1.8–22x at both scales, so this is isolated to the whole-column aggregate path.
Hypothesis (unverified — probe before fixing)
A polars/cudf group-by over one int column at 1.6M rows is well under 5 ms native, so the gap smells like per-query overhead in the Cypher→aggregate lowering (row-pipeline materialization or projection width), not kernel speed. Needs the standard probe → profile pass; #1755 (Cypher-surface tax) and #1658 (selective traversal) are the adjacent named levers.
Status
Not release-blocking (losses are honest cells on the scoreboard with this issue as the named lever). Perf receipts to pyg-bench per measurement-rules.
🤖 Generated with Claude Code
- Lingua principale
- Python
- Stelle
- 2.6k
- Fork
- 229
- Merge medio
- 1g 5h
- PR unite (30g)
- 99
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di graphistry/pygraphistry
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
graphistry/pygraphistry#2171 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
graphistry/pygraphistry#1965 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
graphistry/pygraphistry#1208 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
graphistry/pygraphistry#966 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
graphistry/pygraphistry#824 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di graphistry/pygraphistry
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
aws-samples/sample-per-model-bedrock#795 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
Pretalx reports older version to be the latest release than what is actually installed and availableAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
micropython/micropython#19906 ·
I maintainer di solito rispondono entro 1 giorno