@@ -1263,6 +1263,37 @@ Both changes are within the roughly 0.1% cross-binary layout noise. The pass
12631263mostly performs required hash-table counting work, so eliminating only its
12641264tree-walk control flow has little leverage. The source was fully reverted.
12651265
1266+ ### exp39: lower the similar-list decomposition gate — KEPT at 45,000
1267+
1268+ Exp35 only attempted similar-list pairing when the product of the two section
1269+ sizes reached one million. A temporary trace showed that ` slow ` entered through
1270+ one 1.69M top-level section, while ` typing ` recursively paired sections from
1271+ 1.06M to 5.10M but left plausible 0.40M and 0.48M sections untouched. A
1272+ compile-time sensitivity sweep lowered this single gate:
1273+
1274+ | graph-size gate | ` slow ` change | ` typing ` change | 107-pair output oracle |
1275+ | ---: | ---: | ---: | --- |
1276+ | 250,000 | flat | -0.103% | identical |
1277+ | 100,000 | flat | -0.145% | identical |
1278+ | 50,000 | -17.62% | -0.143% | identical |
1279+ | 45,000 | ** -19.33%** | ** -0.144%** | identical |
1280+ | 40,000 | -19.33% | -0.144% | ` slider_1.rs ` changed |
1281+ | 25,000 | -31.40% | -0.140% | ` load_1.js ` and ` slider_1.rs ` changed |
1282+
1283+ The cliff is discrete: lowering the threshold enables another recursive split,
1284+ not merely a little more preprocessing. The lowest tested exact-output setting,
1285+ 45,000, was retained. Its final ten-run means against a copied exp37 control
1286+ were 642,765,789 to 518,537,235 instructions on ` slow ` and 2,828,226,154 to
1287+ 2,824,159,538 on ` typing ` .
1288+
1289+ On ` slow ` , the number of searches rises from 8 to 17, but their total visited
1290+ vertices fall from 224,960 to 144,260 (** -35.87%** ) and the largest search falls
1291+ from 63,774 to 42,265 vertices (** -33.73%** ). This confirms that many smaller
1292+ searches are substantially cheaper than a few medium dense ones. Output is
1293+ byte-identical in side-by-side, inline, and JSON modes on all 107 available
1294+ sample pairs. ` cargo test ` passes (163 passed, one ignored), and the changed
1295+ file passes ` rustfmt --check ` .
1296+
12661297## Where this leaves things
12671298
12681299| workload | earlier reference | now | change |
@@ -1271,8 +1302,8 @@ tree-walk control flow has little leverage. The source was fully reverted.
12711302| trivial Rust diff, master through query work | 444,668,795 | ~ 206,000,000 | ** -54%** |
12721303| ` huge_cpp ` , before exp17 through exp22 | 14,858,905,910 | 9,285,036,692 | ** -37.5%** |
12731304| ` huge_cpp ` peak RSS, exp21 through exp22 | 696 MB | 491 MB | ** -29%** |
1274- | focused ` typing ` , exp22 through exp37 | 3,115,140,742 | 2,828,276,712 | ** -9.21 %** |
1275- | focused ` slow ` , exp22 through exp37 | 1,881,539,982 | 642,755,405 | ** -65.84 %** |
1305+ | focused ` typing ` , exp22 through exp39 | 3,115,140,742 | 2,824,159,538 | ** -9.34 %** |
1306+ | focused ` slow ` , exp22 through exp39 | 1,881,539,982 | 518,537,235 | ** -72.44 %** |
12761307
12771308The large-input pass found a different class of wins from the original suite:
12781309quadratic display loops (exp13-17), redundant offset-to-line searches (exp19),
@@ -1281,7 +1312,7 @@ The post-exp22 `huge_cpp` profile is now led by line splitting, Imara histogram
12811312diff construction, allocator traffic, and changed-region line conversion; the
12821313previous hunk-end and opposite-line hash hotspots are gone.
12831314
1284- The focused exp23-37 pass first found small, composable wins in slider range
1315+ The focused exp23-39 pass first found small, composable wins in slider range
12851316collection and parent-stack dispatch, then a much larger win by decomposing
12861317oversized graphs at similar sibling lists. It also ruled out three tempting
12871318graph directions on the exact target inputs: regenerating cached neighbours,
0 commit comments