6个稳定版本
1.0.5 | 2024年3月28日 |
---|---|
1.0.4 | 2021年11月7日 |
1.0.3 | 2021年11月4日 |
103 在 内存管理 中排名
2,385 每月下载量
在 7 个Crates中使用(通过 lib-ruby-parser)
9KB
245 行
alloc-from-pool
此crate实现了对象池。
基本用法
use alloc_from_pool::Pool;
// dummy struct
struct Foo([u8; 50]);
// pool has size = 0 by default
let pool = Pool::<Foo>::new();
// performs allocation
let foo1 = pool.alloc(Foo([1; 50]));
// returns memory back to pool
drop(foo1);
// re-uses the value that we've just returned back to pool
let foo2 = pool.alloc(Foo([2; 50]));
// returns memory back to pool
drop(foo2);
// it also possible to create a Factory based on a pool
// that holds a reference to initial Pool
let factory = pool.factory();
// Factory has the same `alloc` method:
let foo3 = factory.alloc(Foo([3; 50]));
// it uses the same pool, and also returns back to the same pool
drop(foo3);
基准测试
您可以使用 cargo bench
运行
test alloc_with_box ... bench: 56 ns/iter (+/- 6)
test alloc_with_pool ... bench: 7 ns/iter (+/- 0)