ic-stable-memory 0.4.4

Internet Computer's stable memory collections and tools
Documentation
#[cfg(test)]
mod vec_benchmark {
    use crate::collections::vec::SVec;
    use crate::{stable};
    use crate::{measure, stable_memory_init};

    const ITERATIONS: usize = 1_000_000;

    #[test]
    #[ignore]
    fn body_direct() {
        {
            let mut classic_vec = Vec::new();

            measure!("Classic vec push", ITERATIONS, {
                for i in 0..ITERATIONS {
                    classic_vec.push(i as u64);
                }
            });

            measure!("Classic vec search", ITERATIONS, {
                for i in 0..ITERATIONS {
                    classic_vec.get(i).unwrap();
                }
            });

            measure!("Classic vec pop", ITERATIONS, {
                for _ in 0..ITERATIONS {
                    classic_vec.pop().unwrap();
                }
            });

            measure!("Classic vec insert", ITERATIONS / 10, {
                for i in 0..(ITERATIONS / 10) {
                    classic_vec.insert(0, i as u64);
                }
            });

            measure!("Classic vec remove", ITERATIONS / 10, {
                for _ in 0..(ITERATIONS / 10) {
                    classic_vec.remove(0);
                }
            });
        }

        {
            stable::clear();
            stable_memory_init();

            let mut stable_vec = SVec::new();

            measure!("Stable vec push", ITERATIONS, {
                for i in 0..ITERATIONS {
                    stable_vec.push(i as u64);
                }
            });

            measure!("Stable vec search", ITERATIONS, {
                for i in 0..ITERATIONS {
                    stable_vec.get(i).unwrap();
                }
            });

            measure!("Stable vec pop", ITERATIONS, {
                for _ in 0..ITERATIONS {
                    stable_vec.pop().unwrap();
                }
            });

            measure!("Stable vec insert", ITERATIONS / 10, {
                for i in 0..(ITERATIONS / 10) {
                    stable_vec.insert(0, i as u64);
                }
            });

            measure!("Stable vec remove", ITERATIONS / 10, {
                for _ in 0..(ITERATIONS / 10) {
                    stable_vec.remove(0);
                }
            });
        }
    }
}