Race mode: the reads each answer needs
Both sides ask Arkiv’s live testnet the same question at the same moment, uncached. Graph Arkiv keeps tallies as payments land, so a city-wide ranking is a couple of reads; plain Arkiv code has to read every payment. The count is the result, not the clock.
synthetic city, size S
Graph Arkiv
One GraphQL query over tallies kept as events land
0Arkiv reads
0.0 KB moved
Plain Arkiv
Careful plain code: it must read every payment, since Arkiv has no SUM
0Arkiv reads
0.0 KB moved
The event’s benchmark
Measured live on Arkiv’s testnet over the synthetic size S city. Each count is Arkiv reads (JSON-RPC calls); bytes are request plus response bodies.
| Question | Plain reads | Plain KB | Graph Arkiv reads | Graph Arkiv KB | Plain right by name | Plain right by identity | Graph Arkiv right |
|---|---|---|---|---|---|---|---|
| Q1: the featured shop’s refund rate and 90-day orders | 3 | 1.3 | 3 | 106.8 | yes | yes | yes |
| Q2: the top 10 shops by sales, city-wide | 5 | 131.9 | 2 | 34.5 | yes | no | yes |
| Q3: the persona’s agents’ spend by shop this week | 2 | 3.3 | 3 | 16.3 | yes | yes | yes |
| Q4: agents that paid a shop this week and later refunded someone else | 1 | 0.5 | 1 | 0.7 | yes | yes | yes |
| Q5: a payment path from the persona’s paying agent to the trap shop, within 3 hops | 5 | 99.5 | 3 | 116.8 | yes | yes | yes |
| Q6: the featured shop’s depth-2 neighbourhood over this week’s payments | 2 | 15.4 | 2 | 54.0 | yes | yes | yes |
Graph Arkiv wins where an answer is an aggregate (the city-wide top 10: 2 reads against 5 or 6), not on every question. Plain code credits a re-registered shop’s earlier holder to the new one, so it is wrong by identity on the top 10.