While dealing with unicode in my std.stream rewrite, I've found that hand-decoding dchars is way faster than using library calls.
After watching Andrei's talk on generic and generative programming I have to ask, which routines are you avoiding .. it seems we need to make them as good as the hand coded code you've written...
R -- Using Opera's revolutionary email client: http://www.opera.com/mail/