mempool

Crates.iomempool
lib.rsmempool
version0.3.1
sourcesrc
created_at2016-03-22 02:36:05.432894
updated_at2016-04-07 20:05:41.743895
descriptionA fast thread safe memory pool for reusing allocations.
homepagehttps://github.com/BurntSushi/mempool
repositoryhttps://github.com/BurntSushi/mempool
max_upload_size
id4519
size21,055
Andrew Gallant (BurntSushi)

documentation

http://burntsushi.net/rustdoc/mempool/

README

mempool

This crate provides a fast thread safe memory pool for reusing allocations. It aggressively optimizes for the single-threaded use case, but gracefully supports access from multiple threads simultaneously. In particular, values in a pool may not be shared across threads.

Linux build status Windows build status

Dual-licensed under MIT or the UNLICENSE.

Documentation

http://burntsushi.net/rustdoc/mempool/

Usage

To use this crate, add mempool as a dependency to your project's Cargo.toml:

[dependencies]
mempool = "0.3"

Benchmarks

This crate currently uses the mempool_get_put_tls approach.

test bench::crossbeam_ms_get_put      ... bench:         105 ns/iter (+/- 4)
test bench::crossbeam_seg_get_put     ... bench:          87 ns/iter (+/- 25)
test bench::crossbeam_treiber_get_put ... bench:          93 ns/iter (+/- 1)
test bench::mempool_get_put_tls       ... bench:           1 ns/iter (+/- 0)
test bench::mpmc_get_put              ... bench:          30 ns/iter (+/- 0)
test bench::mutex_get_put             ... bench:          46 ns/iter (+/- 0)

Motivation

I needed a very fast way to reuse allocations across multiple threads, potentially optimizing single threaded use over multithreaded use.

Future work

The current implementation is very fast for single threaded use, but probably slower than it needs to be for multithreaded use.

Commit count: 18

cargo fmt