Skip to content

Commit 63fd56c

Browse files
borisbatclaude
andcommitted
bench/sql: refresh results.md — join_groupby_to_array m3f -11% INTERP
The Helper B refactor (qmacro_block_to_array → qmacro_expr inside the ArrayJoin adapter branch of adapter_wrap_source_loop) happens to drop an extra ExprBlock layer the original inline qmacro_block produced. m3f INTERP improves 88.1 → 78.1 ns/op (-11.4%). Other 4 join_* m3f cells stay at noise floor (±2.5% drift, uniform with m4 — measurement- floor noise, not refactor-induced). Refreshes: - bottom INTERP table cell + ratio (1.04× → 1.17× — m3f beats m4 even more decisively now) - opening "before / after" summary table cell + attribution (chunk N+3 + dedup follow-up) JIT lane not re-measured this round — the JIT bench (`bin/daslang -jit dastest/dastest.das ...`) currently fails with "can't delete locked array" in clargs at startup, a pre-existing regression on master that also affects the unmodified baseline (not a refactor-induced break). The JIT cells reflect PR GaijinEntertainment#2913 values; refactor doesn't touch codegen logic so JIT codegen runs on a functionally-identical final AST. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 58423c8 commit 63fd56c

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

benchmarks/sql/results.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# Benchmarks — SQL / Array / Decs comparison
22

3-
Generated 2026-05-28 from PR `bbatkin/linq-fold-array-join-splice` (chunk N+3 — linq_fold array-side `_join` splice + cross-arm `_join |> _group_by` via new `ArrayJoin` SourceAdapter). Closes the m3f-vs-m4 parity gap across the entire `join_*` family — all 5 cells m3f beats m4 in both INTERP and JIT:
3+
Generated 2026-05-28 from PR `bbatkin/linq-fold-array-join-splice` (chunk N+3 — linq_fold array-side `_join` splice + cross-arm `_join |> _group_by` via new `ArrayJoin` SourceAdapter) + follow-up `bbatkin/linq-fold-join-emit-dedup` (refactor: shared standalone + adapter helpers). Closes the m3f-vs-m4 parity gap across the entire `join_*` family — all 5 cells m3f beats m4 in both INTERP and JIT:
44

55
| Cell | m3f INTERP before / after | m3f JIT before / after |
66
|---|---:|---:|
77
| `join_count` | 128.2 → **51.0** | 34.6 → **11.6** |
88
| `join_select` | 148.1 → **72.0** | 41.6 → **19.7** |
99
| `join_where_count` | 148.5 → **60.1** | 41.2 → **20.4** |
1010
| `join_groupby_count` | 186.2 → **78.3** | 47.2 → **19.4** |
11-
| `join_groupby_to_array` | 217.8 → **88.1** | 55.5 → **19.5** |
11+
| `join_groupby_to_array` | 217.8 → **78.1** | 55.5 → **19.5** |
1212

1313
Drift across the rest of the matrix is at measurement floor (±5% INTERP, ±10% JIT). The splice is gated on `array_source` + primitive equi-key + (for cross-arm) `upstream_join` capture, so non-join chains aren't touched.
1414
Fixture size: n = 100 000 (cars), 100 dealers, 5 brands. Each row is
@@ -73,7 +73,7 @@ before the timer resolution can measure them — they should be read as
7373
| `indexed_lookup` | 1453.2 | 202198.9 | 470.2 | 0.00× |
7474
| `join_count` | 36.8 | 51.0 | 63.6 | 1.25× |
7575
| `join_groupby_count` | 153.9 | 78.3 | 90.1 | 1.15× |
76-
| `join_groupby_to_array` | 186.0 | 88.1 | 91.4 | 1.04× |
76+
| `join_groupby_to_array` | 186.0 | 78.1 | 91.4 | 1.17× |
7777
| `join_select` || 72.0 | 83.8 | 1.16× |
7878
| `join_where_count` | 38.3 | 60.1 | 74.3 | 1.24× |
7979
| `last_match` | 0.0 | 5.7 | 13.9 | 2.44× |

0 commit comments

Comments
 (0)