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:[EMAIL PROTECTED] _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe