#cpu #cache #data-locality

depacked

Minimalistic Rust Crate for handling memory packed data to aid CPU caching

5 releases

0.2.3 Apr 19, 2022
0.2.2 Apr 18, 2022
0.2.1 Apr 10, 2022
0.2.0 Apr 10, 2022
0.1.0 Apr 8, 2022

#293 in Caching

MIT/Apache

15KB
285 lines

DePacked

crates.io crates.io

Example

use depacked::PackedData;

struct NeedToPack(u32);

fn main() {
    let mut packed = PackedData::with_max_capacity(1000);

    // Insertin is fast but not as CPU cache friendly.
    let first_item = packed.insert(NeedToPack(0));
    let second_item = packed.insert(NeedToPack(1));

    // Getting (mutable) references is fast and CPU cache friendly.
    let first_ref = packed.get(first_item);
    let second_ref_mut = packed.get_mut(second_item);

    // Removing might be slower.
    let first = packed.remove(first_item);
}

License

DePacked is free and open source! All code in this repository is dual-licensed under either:

at your option.

Dependencies

~505KB