Skip to content

Vector with fixed bit sized values stored in long

License

Notifications You must be signed in to change notification settings

eihwaz/bit-long-vec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bit-long-vec

crates.io Build Status codecov

Vector with fixed bit sized values stored in long. Effective to reduce the amount of memory needed for storage values whose size is not a power of 2. As drawback to set and get values uses additional CPU cycles for bit operations.

Usage

Add this to your Cargo.toml:

[dependencies]
bit-long-vec = "0.2"

Example

In this particular scenario, we want to store 10 bit values. It takes 200 bytes to store 100 values using short. To store 100 values using a bit long vector, 15 lengths are required, which is 120 bytes. (-40%).

use bit_long_vec::BitLongVec;

let mut vec = BitLongVec::with_fixed_capacity(100, 10);

for index in 0..100 {
    vec.set(index, 1023);

    assert_eq!(vec.get(index), 1023);
}