The default nursery size is too small
(obligatory: sorry if this is a dupe; I was sure it would be, but can't find it if it exists)
I've never worked with a codebase where using +RTS -A32M
(this is the new default value I'd propose) or something higher did not increase performance, often considerably (today's was hlint
). As far as I can tell using a comparable allocation area setting is almost universal practice.
A better -H
default that had the same effect might be the right choice as well.
I think this is important not only because less experienced users are wasting resources and leaving performance on the table, but because it means GHC developers are likely to optimize for the wrong thing.
Both this observation and myths about cache size seem to have a long history
Thanks!