[Haskell-cafe] Speed of character reading in Haskell
Bulat Ziganshin
bulat.ziganshin at gmail.com
Mon Sep 10 02:30:04 EDT 2007
Hello Neil,
Monday, September 10, 2007, 3:49:06 AM, you wrote:
>> 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.
in ghc, is entirely due to locking, which is the slowest operation in
whole hGetChar algorithm
> Buffering: getChar demands to get a character now, which pretty much
> means you can't buffer.
both uses the same buffering (512 bytes)
> Blocks: getContents reads blocks at a time from the underlying
> library, whereas getChar has to do one character at a time.
i don't see difference between buffering and blocking
> Locks: getChar has to acquire locks, as does getContents. However,
> because getContents can operate on blocks, this requires many fewer
> locks.
getContents doesn't lock Handle because it is supposed to use it in
exclusive manner
--
Best regards,
Bulat mailto:Bulat.Ziganshin at gmail.com
More information about the Haskell-Cafe
mailing list