elastic-array 0.9.0

Elastic vector backed by fixed size array
Documentation
//! should be started with:
//! //! ```bash
//! //! multirust run nightly cargo bench
//! //! ```

#![feature(test)]
extern crate test;
extern crate rand;

extern crate elastic_array;
extern crate to_compare;

use test::Bencher;
use rand::random;

use elastic_array::ElasticArray1024;
use to_compare::*;

const LEN: usize = 2048;

fn gen_data() -> [u8; LEN] {
	let mut arr = [0u8; LEN];
	for i in 0..LEN {
		arr[i] = random::<u8>();
	}
	arr
}

type BytesShort = ElasticArray1024<u8>;

#[bench]
fn bench_elastic_array(b: &mut Bencher) {
	let data = gen_data();
	b.iter(|| {
		let f = test::black_box(0);
		let n = test::black_box(LEN);
		let mut bytes = BytesShort::new();
		for i in f..n {
			bytes.push(data[i]);
		}
	});
}

#[bench]
fn bench_vector(b: &mut Bencher) {
	let data = gen_data();
	b.iter(|| {
		let f = test::black_box(0);
		let n = test::black_box(LEN);
		let mut v = BytesVec1024::new();
		for i in f..n {
			v.push(data[i]);
		}
	});
}

#[bench]
fn bench_arr(b: &mut Bencher) {
	let data = gen_data();
	b.iter(|| {
		let f = test::black_box(0);
		let n = test::black_box(LEN);
		let mut arr = BytesArr1024::new();
		for i in f..n {
			arr.push(data[i]);
		}
	});
}