buffer-builder: Library for efficiently building up buffers, one piece at a time

[ bsd3, data, library ] [ Propose Tags ]

Data.BufferBuilder is an efficient library for incrementally building up ByteStrings, one chunk at a time. Early benchmarks show it is over twice as fast as ByteString Builder, primarily because BufferBuilder is built upon an ST-style restricted monad and mutable state instead of ByteString Builder's monoidal AST.

Internally, BufferBuilder is backed by a few C functions. Examination of GHC's output shows nearly optimal code generation with no intermediate thunks -- and thus, continuation passing and its associated indirect jumps and stack traffic only occur when BufferBuilder is asked to append a non-strict ByteString.

I benchmarked four approaches with a URL encoding benchmark:

Using BufferBuilder is very simple:

import qualified Data.BufferBuilder as BB

let byteString = BB.runBufferBuilder $ do
      BB.appendBS "http"
      BB.appendChar8 '/'
      BB.appendBS "//"

This package also provides Data.BufferBuilder.Utf8 for generating UTF-8 buffers and Data.BufferBuilder.Json for encoding data structures into JSON.

Versions 0.1.0.0, 0.2.0.0, 0.2.0.1, 0.2.0.2, 0.2.0.3, 0.2.1.0, 0.2.2.0, 0.2.2.1, 0.2.2.2, 0.2.3.0, 0.2.4.0, 0.2.4.1, 0.2.4.2, 0.2.4.3, 0.2.4.4, 0.2.4.5, 0.2.4.6 (info)
Dependencies base (==4.*), bytestring, mtl, text, unordered-containers, vector [details]
License BSD-3-Clause
Copyright IMVU Inc., Chad Austin, Andy Friesen
Author Chad Austin, Andy Friesen
Maintainer chad@chadaustin.me
Category Data
Home page https://github.com/chadaustin/buffer-builder
Uploaded by afriesen at Sun Feb 22 21:59:19 UTC 2015
Distributions LTSHaskell:0.2.4.6, NixOS:0.2.4.6, Stackage:0.2.4.6
Downloads 4810 total (199 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2015-02-22 [all 1 reports]
Hackage Matrix CI

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees