
On 23/05/12 21:11, Ryan Newton wrote:
Thanks. I'll look into how to optimise .hi loading by more
mailto:the.dead.shall.rise@gmail.com> wrote: traditional means, then.
Lennart is working on speeding up the binary package (which I believe is used to decode the .hi files.) His work might benefit this effort.
Last time I tested it, mmap still offered better performance than fread on linux. In addition to improving the deserialization code it would seem like a good idea to mmap the whole file at the outset as well.
It seems like readBinMem is the relevant function (readIFace -> readBinIFace -> readBinMem), which occurs here:
https://github.com/ghc/ghc/blob/08894f96407635781a233145435a78f144accab0/com...
Currently it does one big hGetBuf to read the file. Since the interface files aren't changing dynamically, I think it's safe to just replace this code with an mmap.
I honestly don't think it will make much difference, because reading the files is not the bottleneck, but we'll happily accept a patch. Adding a new package dependency just for this doesn't seem worthwhile though. Cheers, Simon