I doing some experimenting with rust to better understand the value (if any) of pre-allocating data structures. However When I run my benchmark it is showing there is no difference between pre-allocated and not. I can't tell if this is just because rust is optimizing my code or if there is really no difference. Am I missing something here?
#![feature(test)]
extern crate test;
#[cfg(test)]
mod alloc {
use test::Bencher;
#[inline(never)]
fn create_pre() -> Vec<u64> {
Vec::with_capacity(1000000)
}
#[inline(never)]
fn create_post() -> Vec<u64> {
Vec::with_capacity(0)
}
#[bench]
fn pre_alloc(b: &mut Bencher) {
b.iter(|| {
let mut arr = create_pre();
for i in 0..=1000000 {
arr.push(i);
}
})
}
#[bench]
fn post_alloc(b: &mut Bencher) {
b.iter(|| {
let mut arr = create_post();
for i in 0..=1000000 {
arr.push(i);
}
})
}
}