#5536: IO performance regression in 7.2 vs 7.0
---------------------------------+------------------------------------------
    Reporter:  simonmar          |        Owner:  batterseapower
        Type:  bug               |       Status:  new           
    Priority:  high              |    Milestone:  7.4.1         
   Component:  libraries/base    |      Version:  7.2.1         
    Keywords:                    |     Testcase:                
   Blockedby:                    |   Difficulty:                
          Os:  Unknown/Multiple  |     Blocking:                
Architecture:  Unknown/Multiple  |      Failure:  None/Unknown  
---------------------------------+------------------------------------------

Comment(by batterseapower):

 It could definitely be to do with the change to writeBlocks/unpack: in
 writeBlocks (invoked from putStr) we have to do an extra test on each
 character to see if we have to map them to lone surrogatess in the
 CharBuf. Likewise, in unpack (invoked from getContents) we have to test
 each element of the CharBuf to see if it is a lone surrogate we should map
 to our private-use area.

 This is a consequence of the decision to use private-use characters for
 encoding roundtrip characters, as opposed to using lone surrogates
 directly (like Python does).

 One possible avenue for improvement is that in this invocation of unpack
 we know that the CharBuf can't contain any lone surrogates (since it came
 from a binary-mode handle), so we could avoid the test. Actually
 implementing this might be a bit tricky, though.

 I did eyeball the unpack loop and noticed that
 surrogatifyRoundtripCharacter was returning a boxed character. This is
 pretty much a disaster, so I added INLINE pragmas to all of the small
 combinators in Failure.hs, which moved the runtime of a binary "cat" from
 2.2s to 2.0s on my machine (7.0.4 clocks in at 1.5s). Is this the change
 Simon made in ea4bb083c6222e7c774fdb554f24f17a53ae350d? I can't actually
 see that commit in my repo, for some reason.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5536#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to