-
Herbert Valerio Riedel authored
When looking at heap-profiles of `cabal-install`, the `(:)` constructor stands out as the most-allocated constructor on the heap. Having to handle 10k+ package names contributes to the allocation numbers, especially on 64bit archs where ASCII `String`s have a 24 byte per character footprint. This commit is a preparatory commit to pave the way for changing `PackageName`'s internal representation to something like `ShortByteString` (which is essentially a thin wrapper around primitive `ByteArray#`s which themselves have have an overhead of 2 words + one byte per ASCII character rounded up to nearest word) which would allow to reduce the memory footprint by a full order of magnitude, as well as reduce pointer chasing and GC overhead.
dabd9d98
To find the state of this project's repository at the time of any of these versions, check out the tags.