Commits on May 2, 2011
  1. @tibbe
  2. @tibbe

    Add missing BangPatterns pragma

    tibbe committed May 2, 2011
  3. @tibbe
  4. @tibbe
  5. @tibbe

    Add putCharUtf8

    The implementation is based on the text package by Bryan O'Sullivan.
    tibbe committed May 2, 2011
Commits on Mar 31, 2011
  1. @tibbe
  2. @tibbe

    Add low-level combinator writeAtMost

    writeAtMost allows for more static bounds check merging using rules,
    at the risk of wasting some buffer space.
    tibbe committed Mar 31, 2011
  3. @tibbe

    Expose semi-public internals

    This allows users to write efficient builders, without modifying the
    library.
    
    Some code had to be moved around so that writeN could be exposed
    without exposing any other internals.
    tibbe committed Mar 31, 2011
  4. @tibbe

    Convert some Put monad benchmarks into Builder benchmarks

    This lets us remove any potential overhead added by Put.
    
    As a side benefit Criterion makes sure our benchmarks are robust.
    tibbe committed Mar 31, 2011
  5. @tibbe

    Removed unused import

    tibbe committed Mar 31, 2011
  6. @tibbe
Commits on Mar 30, 2011
  1. @tibbe
  2. @tibbe

    Ignore more generated files

    tibbe committed Mar 30, 2011
  3. @tibbe

    Replace writeNbytes by writeN and a cast

    This makes the rewrite rules fire for host order writes as well.
    tibbe committed Mar 30, 2011
  4. @tibbe
  5. @tibbe

    Cleaned up benchmark Makefile

    tibbe committed Mar 30, 2011
  6. @tibbe
  7. @tibbe

    Move benchmarks to a dedicated directory

    Made minor tweaks to make everything compile.
    tibbe committed Mar 30, 2011
  8. @tibbe
  9. @aslatter @kolmodin
Commits on Mar 16, 2011
  1. @tibbe @kolmodin

    Add rewrite rules to merge bound checks on GHC 7 and later

    This change merges the bounds check in straight-line code like
    
        singleton 1 `mappend` (singleton 2 `mappend` singleton 3)
    
    where the bounds are statically known.
    
    This gives a 90% improvement when writing bytes in chunks.
    
    Before:
    
        100MB of Word8 in chunks of 16 (Host endian): 68.5 MB/s write
    
    After:
    
        100MB of Word8 in chunks of 16 (Host endian): 129.9 MB/s write
    tibbe committed with kolmodin Mar 10, 2011
Commits on Feb 27, 2011
  1. @tibbe @kolmodin

    Builder: only use lazy I/O where necessary

    Each ByteString chunk must be built in one go and therefore we don't
    need to be lazy in every write.  Lazy I/O is only needed to delay the
    construction of the remaining ByteString chunks.
    
    This also improves performance a bit:
    
    Before
    ======
    
    Binary (de)serialisation benchmarks:
    100MB of Word8  in chunks of 16 (Host endian):   53.9 MB/s write
    100MB of Word16 in chunks of 16 (Host endian):  104.8 MB/s write
    100MB of Word32 in chunks of 16 (Host endian):  213.1 MB/s write
    100MB of Word64 in chunks of 16 (Host endian):  131.5 MB/s write
    
    After
    =====
    
    Binary (de)serialisation benchmarks:
    100MB of Word8  in chunks of 16 (Host endian):   70.1 MB/s write
    100MB of Word16 in chunks of 16 (Host endian):  144.2 MB/s write
    100MB of Word32 in chunks of 16 (Host endian):  281.3 MB/s write
    100MB of Word64 in chunks of 16 (Host endian):  146.8 MB/s write
    tibbe committed with kolmodin Feb 27, 2011
  2. @tibbe @kolmodin
  3. @tibbe @kolmodin

    Added a .gitignore

    tibbe committed with kolmodin Feb 26, 2011
Commits on Feb 25, 2011
  1. @tibbe

    Inline mconcat

    This results in better core and corresponding speed-ups.
    tibbe committed Feb 25, 2011
  2. @tibbe

    Help the GHC 7.0.2 arity analyser

    By defining 'empty' as
    
        empty = Builder (\ k b -> k b)
    
    instead of as
    
        empty = Builder id
    
    the GHC arity analyser can figure out the arity of loops like this one
    
        fromWord8s [] = mempty
        fromWord8s (x:xs) = singleton x `mappend` fromWord8s xs
    
    Before it would allocate and apply a closure for fromWord8s each time around the
    loop instead of making a tail call.
    tibbe committed Feb 25, 2011
Commits on Nov 20, 2010
  1. @kolmodin

    Update my email address

    kolmodin committed Nov 20, 2010
Commits on Aug 10, 2010
  1. @simonpj
Commits on Jul 30, 2010
  1. @simonpj
  2. @simonpj
Commits on Sep 16, 2009
  1. @donsbot

    Some tweaks to the testsuite

    donsbot committed Sep 16, 2009
  2. @donsbot
Commits on Sep 15, 2009
  1. @simonmar

    Make Get a strict state monad, using unboxed tuples for speed

    Contrary to comments in the code, the bind operator for Get was lazy.
    Making it strict and using unboxed tuples for the return type improves
    performance for me.
    
    One possible concern is whether the lazy Get monad is being relied on
    to avoid stack overflow, but looking at the fix that was needed
    recently for replicateM I'm presuming that this is not an issue.
    simonmar committed Sep 15, 2009
Commits on Mar 7, 2009
  1. @donsbot

    minor bump

    donsbot committed Mar 8, 2009
Commits on Feb 23, 2009
  1. @donsbot

    tweaks

    donsbot committed Feb 23, 2009