#bump-allocator #allocator #performance #no-std #global-allocator

nightly no-std dodgems

一个简单快速的bump分配器库

1 个不稳定版本

0.1.1 2023年11月8日
0.1.0 2023年11月7日

#655 in 内存管理

MIT许可证

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。如果你想使用不同的分配器,或者没有全局分配器可用,你可以禁用它。

无运行时依赖

功能