ead3bd4c
by Rodrigo Mesquita at 2026-06-23T17:03:20+01:00
Empty commit, accept metrics:
Metrics: compile_time/bytes allocated
-------------------------------------
Baseline
Test Metric value New value Change
------------------------------------------------------------------------------------------
InstanceMatching(normal) ghc/alloc 1,145,959,113 1,186,619,544 +3.5% BAD
MultiComponentModulesRecomp(normal) ghc/alloc 597,207,232 618,028,168 +3.5% BAD
MultiLayerModules(normal) ghc/alloc 3,758,938,427 3,599,359,024 -4.2% GOOD
T10547(normal) ghc/alloc 24,791,700 26,882,568 +8.4% BAD
T12234(optasm) ghc/alloc 50,179,044 51,470,552 +2.6% BAD
T12425(optasm) ghc/alloc 76,129,240 77,611,840 +1.9% BAD
T13035(normal) ghc/alloc 81,107,420 82,879,768 +2.2% BAD
T13701(normal) ghc/alloc 3,455,572,124 3,170,909,168 -8.2% GOOD
T13820(normal) ghc/alloc 27,310,260 28,962,824 +6.1% BAD
T14697(normal) ghc/alloc 454,460,496 427,282,904 -6.0% GOOD
T18140(normal) ghc/alloc 46,025,476 48,039,600 +4.4% BAD
T18282(normal) ghc/alloc 118,979,708 121,371,368 +2.0% BAD
T18698a(normal) ghc/alloc 195,729,417 198,210,960 +1.3% BAD
T18698b(normal) ghc/alloc 176,091,489 178,839,680 +1.6% BAD
T18730(optasm) ghc/alloc 129,923,785 131,490,416 +1.2% BAD
T18923(normal) ghc/alloc 54,812,876 55,997,576 +2.2% BAD
T20049(normal) ghc/alloc 65,225,572 67,339,024 +3.2% BAD
T21839c(normal) ghc/alloc 339,233,494 345,159,824 +1.7% BAD
T5030(normal) ghc/alloc 140,657,548 143,617,992 +2.1% BAD
T9198(normal) ghc/alloc 40,466,900 41,381,736 +2.3% BAD
hard_hole_fits(normal) ghc/alloc 208,002,867 202,293,816 -2.7% GOOD
mhu-perf(normal) ghc/alloc 47,144,955 45,556,872 -3.4% GOOD
geo. mean +1.1%
minimum -8.2%
maximum +8.4%
Investigated in depth
T10547(8.4%; 24MB): One-off cost of reading GHC.Essentials, one interface more than before
(https://gitlab.haskell.org/ghc/ghc/-/merge_requests/15899#note_680477)
InstanceMatching(3.5%;1.14GB): Inconclusive investigation starting from
https://gitlab.haskell.org/ghc/ghc/-/merge_requests/15899#note_680504,
where it is very hard to justify why getDictionary allocates 25MB more
than before.
That said, the investigation yielded a separately-merged change which
reduces allocates by 10%. I've run out of time and ideas to investigate this
small regression, but considering the big win yielded I'm tempted to
just accept this one, as I don't know how else to investigate.
The tests which allocate very little and regress for about 1MB more are
most likely caused by the GHC.Essentials additional cost: T9198, T18923,
T13820, T13035, T12234, T12425, T18730, T20049. Even if they aren't directly by
GHC.Essentials, these are small one-shot cost regressions when we don't
allocate a lot, which is acceptable for the payload of this patch
Missing investigation: MultiComponentModulesRecomp, T18140, T18282, T18698a, T18698b, T21839c, T5030
-------------------------
Metric Decrease:
MultiLayerModules
T13701
T14697
hard_hole_fits
mhu-perf
size_hello_obj
Metric Increase:
InstanceMatching
T10547
T9198
T18923
T13820
T13035
T12234
T12425
T18730
T20049
-------------------------