[Haskell-cafe] Speed of character reading in Haskell

Neil Mitchell ndmitchell at gmail.com
Sun Sep 9 19:49:06 EDT 2007


Hi

> > (Some list operations are too expensive with ByteString but for most
> > string processing it's perfectly fine and much faster than String).
>
> I'm sure it's true, but it's quite irrelevant to my question, which is
> "why is using getChar so much slower than using getContents"?

Buffering, blocks and locks.

Buffering: getChar demands to get a character now, which pretty much
means you can't buffer.

Blocks: getContents reads blocks at a time from the underlying
library, whereas getChar has to do one character at a time.

Locks: getChar has to acquire locks, as does getContents. However,
because getContents can operate on blocks, this requires many fewer
locks.

Thanks

Neil


More information about the Haskell-Cafe mailing list