2010/3/23 Iustin Pop <iusty@k1024.org>
I agree with the principle of correctness, but let's be honest - it's
(many) orders of magnitude between ByteString and String and Text, not
just a few percentage points…

Well, your benchmarks are highly suspect. See below.
 
Data.ByteString.Lazy.UTF8 (system readFile + fromString + length) - 11
seconds, correct length.

You should be using bytestring I/O for this.
 
Data.Text.Lazy (system readFile + pack + length) - 26s, correct length.

You should be using text I/O for this.