ipld-eth-server/vendor/github.com/libp2p/go-buffer-pool
2019-12-02 13:24:54 -06:00
..
.travis.yml update to work with go-ipfs fork that doesn't use go modules and so can play nice with our forked dependencies; update documentation and dockerfile 2019-12-02 13:24:54 -06:00
buffer.go update dependencies to work with update eth-block-extractor 2019-12-02 13:24:49 -06:00
codecov.yml update dependencies to work with update eth-block-extractor 2019-12-02 13:24:49 -06:00
go.mod update to work with go-ipfs fork that doesn't use go modules and so can play nice with our forked dependencies; update documentation and dockerfile 2019-12-02 13:24:54 -06:00
LICENSE update dependencies to work with update eth-block-extractor 2019-12-02 13:24:49 -06:00
LICENSE-BSD update dependencies to work with update eth-block-extractor 2019-12-02 13:24:49 -06:00
pool.go update dependencies to work with update eth-block-extractor 2019-12-02 13:24:49 -06:00
README.md update to work with go-ipfs fork that doesn't use go modules and so can play nice with our forked dependencies; update documentation and dockerfile 2019-12-02 13:24:54 -06:00
writer.go update to work with go-ipfs fork that doesn't use go modules and so can play nice with our forked dependencies; update documentation and dockerfile 2019-12-02 13:24:54 -06:00

go-buffer-pool

codecov Travis CI Discourse posts

A variable size buffer pool for go.

Table of Contents

Use Case

Use this when you need to repeatedly allocate and free a bunch of temporary buffers of approximately the same size.

Advantages over GC

  • Reduces Memory Usage:

    • We don't have to wait for a GC to run before we can reuse memory. This is essential if you're repeatedly allocating large short-lived buffers.
  • Reduces CPU usage:

    • It takes some load off of the GC (due to buffer reuse).
    • We don't have to zero buffers (fewer wasteful memory writes).

Disadvantages over GC:

  • Can leak memory contents. Unlike the go GC, we don't zero memory.
  • All buffers have a capacity of a power of 2. This is fine if you either (a) actually need buffers with this size or (b) expect these buffers to be temporary.
  • Requires that buffers be returned explicitly. This can lead to race conditions and memory corruption if the buffer is released while it's still in use.

Contribute

PRs are welcome!

Small note: If editing the Readme, please conform to the standard-readme specification.

License

MIT © Protocol Labs BSD © The Go Authors


The last gx published version of this module was: 0.1.3: QmQDvJoB6aJWN3sjr3xsgXqKCXf4jU5zdMXpDMsBkYVNqa