I've been looking at increasing performance of haskell based software lately, more precisely of the blog. Here's a small benchmark done related to different changes i introduced to the codebase on the main page.
no cache, no bytestring: 94mb memory, 110ms rendering time
no cache, bytestring: 35mb memory, 50ms rendering time
cached, no bytestring: 30mb memory, 35ms rendering time
cached, bytestring: 450kb memory, 10ms rendering time
As you can see introducing bytestring, is a major performance enhancer compare to the unpacked and inefficient haskell String. I'm sure there's more that can be squeezed, since i have to go back to normal string back and forth at 2 differents place; parsec 2 doesn't seems to support bytestring, hstringtemplate cannot instanciate a stringtemplate from a bytestring) next step is to get rid of the unpacking/packing and see which optimisation can be done: need to find howto to do haskell profiling.