1 个不稳定版本
0.1.1 | 2023年11月8日 |
---|---|
0.1.0 |
|
#655 in 内存管理
13KB
124 行
Dodgems - 一个简单的bump分配器库
此crate提供了一种快速的单线程bump分配器,适用于性能敏感的场景。
⚠️ 它不是一个通用分配器:你需要另一个(理论上较慢的)分配器来支持它。 默认情况下,它是全局分配器。
它可以用于循环中的快速和脏的分配,其中你知道内存可以在最后一次性回收。
示例
#![feature(allocator_api)]
use dodgems::BumpCar;
let mut bumpcar = BumpCar::new(1024).unwrap(); // 1kB capacity
for i in 0..100 {
// allocate with the allocator api
let mut v = Vec::new_in(&bumpcar);
v.push(42);
// small fast allocations in hot loop
drop(v);
// reset the capacity once every allocation has been dropped
bumpcar.reset();
}
drop(bumpcar)
在 allocator_api
稳定之前,此crate需要nightly版本。
lib.rs
:
Dodgems - 一个简单的bump分配器库
此crate提供了一种快速的单线程bump分配器,适用于性能敏感的场景。
⚠️ 它不是一个通用分配器:你需要另一个(理论上较慢的)分配器来支持它。 默认情况下,它是全局分配器。
它可以用于循环中的快速和脏的分配,其中你知道内存可以在最后一次性回收。
示例
#![feature(allocator_api)]
use dodgems::BumpCar;
let mut bumpcar = BumpCar::new(1024).unwrap(); // 1kB capacity
for i in 0..100 {
let mut v = Vec::new_in(&bumpcar); // allocate with the allocator api
v.push(42);
// small fast allocations in hot loop
drop(v);
bumpcar.reset(); // reset the capacity once every allocation has been dropped
}
drop(bumpcar)
在 allocator_api
稳定之前,此crate需要nightly版本。
功能
(默认)alloc
功能控制是否使用alloc
标准crate。如果你想使用不同的分配器,或者没有全局分配器可用,你可以禁用它。