Hadrian freeze1 no-op takes quite long
I find that the following command on a completed validate build (not sure if quick or default makes a difference) takes 4s on my machine:
$ hadrian/build --flavour=validate --skip='//*.mk' --skip=stage1:lib:rts --freeze1 --report --build-root=_validate +RTS -s
Up to date
Writing report to report.html
shakeArgsWith 0.000s 0%
Function shake 0.005s 0%
Database read 0.589s 11% ====
With database 0.026s 0%
Running rules 3.465s 69% =========================
Pool finished (1 threads, 1 max) 0.003s 0%
Profile report 0.898s 18% ======
Cleanup 0.000s 0%
Total 4.987s 100%
Build completed in 4.99s
11,657,404,688 bytes allocated in the heap
1,636,997,592 bytes copied during GC
221,555,448 bytes maximum residency (15 sample(s))
2,663,688 bytes maximum slop
211 MB total memory in use (0 MB lost due to fragmentation)
Tot time (elapsed) Avg pause Max pause
Gen 0 10782 colls, 0 par 0.810s 0.808s 0.0001s 0.0010s
Gen 1 15 colls, 0 par 0.620s 0.619s 0.0413s 0.1598s
TASKS: 5 (1 bound, 4 peak workers (4 total), using -N1)
SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)
INIT time 0.000s ( 0.000s elapsed)
MUT time 3.681s ( 3.576s elapsed)
GC time 1.430s ( 1.427s elapsed)
EXIT time 0.000s ( 0.007s elapsed)
Total time 5.112s ( 5.010s elapsed)
Alloc rate 3,166,660,336 bytes per MUT second
Productivity 72.0% of total user, 71.4% of total elapsed
Here's the generated report.html.
8.6GB, >200MB residency!
I'm not sure if I can slap any more --skip
flags onto that, but I hope that we can figure out a way that speeds up a no-op build like that (and thereby any build that actually has to do something).
Although the need for speed is mostly alleviated by HLS. I "hope" that this is shake's fault, so that more than just GHC might profit from a performance fix. But it might not, in which case I still like a fast GHC build system.