Hi, Daniel -
Thanks for taking the new code for a test drive!
The interesting part is the comparison between text and vanilla String I/O,
the difference is smaller than I expected for text-0.8.0.0.
Yes. Much of this is due to the new encoding stuff on Handles in GHC 6.12, which is slow. Its performance wasn't so noticeable when it was only shipping String around, but it's much more visible with Text. It's far slower on a Mac than on Linux, in case that's relevant.
The performance of text-0.8.0.0 has improved significantly over that of
text-0.7.2.1 (for the tested features), the improvement of the replacing
algorithm is however not as impressive as that of I/O.
I'd bet you that's mostly because the program is I/O bound, in the sense that it's spending time going through the layers of buffering and translation that now make up a Handle. Any improvement in other code is going to be hard to see because of that.
The other major consideration, both for this case and the first one you note, is that the inliner in 6.12 chokes on code that uses stream fusion: it boxes and unboxes vast quantities of state. That kills performance due to both the boxing and unboxing overhead and the increased number of nursery GCs.
The marvelous new 6.13 inliner does a much better job here - that's where I see those 3x performance improvements for free.
What's *really* bad is the space behaviour.
What are you using to measure that?
Also, please don't forget to post your benchmark code when you make observations like this, as that way I can reproduce your measurements and fix problems. I appreciate your help!
Regards,
Bryan.