[jhc] Hotspots.

Lemmih lemmih at gmail.com
Fri Feb 15 13:21:55 EST 2008


I've found a few hotspots that'll be working on. I'd be very
interested in discussing solutions.

Performance flaws:
 * IdMaps are used to generate new ids.
 * Ho files contain huge amounts of duplicate information.
 * Ho files aren't saved lazily.
 * C code is used for generating atoms.

Repeatedly mapping variables to 'const Nothing' is very expensive. It
is currently the most expensive procedure in Jhc, taking ~20% CPU time
when compiling the base library.

The base library contains 65 megabytes of uncompressed data. Most of
that is duplicate information that disappears when it is compressed.
However, parsing that amount of data takes considerable time.

Ho files are completely serialized before they're written to disk.

Using C code for generating atoms results in no performance
improvement. There are only a few cases where using C is beneficial
and this is not one of them.


More information about the jhc mailing list