Core lint can dominate compile times
As determined in #20736 (closed) the reason for the long compile times in
GHCi.Message was due to core lint.
With core lint:
65,991,211,184 bytes allocated in the heap 3,939,647,480 bytes copied during GC 263,766,640 bytes maximum residency (13 sample(s)) 3,624,336 bytes maximum slop 718 MiB total memory in use (0 MB lost due to fragmentation) Tot time (elapsed) Avg pause Max pause Gen 0 1260 colls, 0 par 15.580s 15.602s 0.0124s 0.1712s Gen 1 13 colls, 0 par 5.657s 5.854s 0.4503s 1.0147s TASKS: 4 (1 bound, 3 peak workers (3 total), using -N1) SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled) INIT time 0.036s ( 0.040s elapsed) MUT time 51.227s ( 52.204s elapsed) GC time 21.236s ( 21.455s elapsed) EXIT time 0.001s ( 0.001s elapsed) Total time 72.500s ( 73.700s elapsed)
Without core lint
15,660,009,440 bytes allocated in the heap 3,199,285,712 bytes copied during GC 229,501,880 bytes maximum residency (12 sample(s)) 3,462,216 bytes maximum slop 654 MiB total memory in use (0 MB lost due to fragmentation) Tot time (elapsed) Avg pause Max pause Gen 0 414 colls, 0 par 10.152s 10.153s 0.0245s 0.1526s Gen 1 12 colls, 0 par 4.635s 4.635s 0.3862s 0.8169s TASKS: 4 (1 bound, 3 peak workers (3 total), using -N1) SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled) INIT time 0.008s ( 0.008s elapsed) MUT time 16.172s ( 16.979s elapsed) GC time 14.787s ( 14.788s elapsed) EXIT time 0.001s ( 0.005s elapsed) Total time 30.969s ( 31.780s elapsed) Alloc rate 968,322,075 bytes per MUT second Productivity 52.2% of total user, 53.4% of total elapsed Alloc rate 1,288,202,870 bytes per MUT second Productivity 70.7% of total user, 70.8% of total elapsed
Given that we run core lint on every CI pipeline, it stands to reason that we could reduce CI times in half by disabling core lint. Therefore we could greatly benefit from speeding it up.