#4979: IO performance regression in 7.0.2
---------------------------------+------------------------------------------
    Reporter:  simonpj           |        Owner:              
        Type:  bug               |       Status:  new         
    Priority:  normal            |    Milestone:              
   Component:  Compiler          |      Version:  7.0.1       
    Keywords:                    |     Testcase:              
   Blockedby:                    |   Difficulty:              
          Os:  Unknown/Multiple  |     Blocking:              
Architecture:  Unknown/Multiple  |      Failure:  None/Unknown
---------------------------------+------------------------------------------
 If you benchmark `spectral/sphere` you'll see a 25% increase in allocation
 between 7.0.1 and 7.0.2.  I spent quite a while wondering what was going
 on, but I think I know now: the I/O library has changed.   In particular,
 in 7.0.2 `GHC.IO.Handle.Internals` has a function `writeCharBuffer` that
 doesn't exist in 7.0.1; and this function is indirectly responsible for
 the extra allocation.

 In a bit more detail,
  * The extra allocation actually happens in
 `GHC.IO.Encoding.Iconv.mkTextEncoding4`.
  * This function is (indirectly) packaged into the first field of a
 `BufferCodec` structure.
  * This structure is unpacked,  and the first field is called, in
 `GHC.IO.Handle.Internals.$wa2`.
  * And that function in turn is the worker for `writeCharBuffer`.

 Beyond this I cannot say.  Maybe this is a good change and the extra work
 is necessary.  Maybe not.  But that is where the regression comes from.
 It'd be good to check.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4979>
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