[commit: packages/bytestring] ghc-head: Port performance patches from private bytestring branch (25708d3)

git at git.haskell.org git
Fri Oct 4 08:27:47 UTC 2013


Repository : ssh://git at git.haskell.org/bytestring

On branch  : ghc-head
Link       : http://git.haskell.org/packages/bytestring.git/commitdiff/25708d3a4a8a410795f42b97c9a4e73c04751c1a

>---------------------------------------------------------------

commit 25708d3a4a8a410795f42b97c9a4e73c04751c1a
Author: Simon Meier <simon.meier at erudify.com>
Date:   Sat Aug 31 09:15:00 2013 +0200

    Port performance patches from private bytestring branch
    
    - simplify chunk insertion (strict bytestrings instead of
      lazy-byestring-continuations)
    
    - bytestring chunk insertion is half as fast as on blaze-builder. This
      performance loss can be attributed completely to the change from using
      'inlinePerformIO' to using 'unsafePerformIO' in the conversion from builders
      to lazy bytestrings. This slowdown can be circumvented by executing
      buildersin the IO monad, where no unsafePerformIO is necessary.
    
    - rewrite some of the primitive builders to a non-recursive form to avoid
      unnecessary closure allocation on the fast path


>---------------------------------------------------------------

25708d3a4a8a410795f42b97c9a4e73c04751c1a
 Data/ByteString/Builder/Extra.hs    |   52 ++-
 Data/ByteString/Builder/Internal.hs |  682 +++++++++++++++++++++++------------
 Data/ByteString/Builder/Prim.hs     |   76 ++--
 bench/BenchAll.hs                   |   52 ++-
 4 files changed, 546 insertions(+), 316 deletions(-)

Diff suppressed because of size. To see it, use:

    git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc 25708d3a4a8a410795f42b97c9a4e73c04751c1a



More information about the ghc-commits mailing list