libextra: Add benchmarks for ebml::reader::vuint_at()

This commit is contained in:
Carl-Anton Ingmarsson 2014-01-02 19:48:30 +01:00
parent 0df9b850ac
commit 3250e65500

View file

@ -960,3 +960,87 @@ mod tests {
test_v(Some(3));
}
}
#[cfg(test)]
mod bench {
use ebml::reader;
use test::BenchHarness;
#[bench]
pub fn vuint_at_A_aligned(bh: &mut BenchHarness) {
use std::vec;
let data = vec::from_fn(4*100, |i| {
match (i % 2) {
0 => 0x80u8,
_ => i as u8,
}
});
let mut sum = 0u;
bh.iter(|| {
let mut i = 0;
while (i < data.len()) {
sum += reader::vuint_at(data, i).val;
i += 4;
}
});
}
#[bench]
pub fn vuint_at_A_unaligned(bh: &mut BenchHarness) {
use std::vec;
let data = vec::from_fn(4*100+1, |i| {
match (i % 2) {
1 => 0x80u8,
_ => i as u8
}
});
let mut sum = 0u;
bh.iter(|| {
let mut i = 1;
while (i < data.len()) {
sum += reader::vuint_at(data, i).val;
i += 4;
}
});
}
#[bench]
pub fn vuint_at_D_aligned(bh: &mut BenchHarness) {
use std::vec;
let data = vec::from_fn(4*100, |i| {
match (i % 4) {
0 => 0x10u8,
3 => i as u8,
_ => 0u8
}
});
let mut sum = 0u;
bh.iter(|| {
let mut i = 0;
while (i < data.len()) {
sum += reader::vuint_at(data, i).val;
i += 4;
}
});
}
#[bench]
pub fn vuint_at_D_unaligned(bh: &mut BenchHarness) {
use std::vec;
let data = vec::from_fn(4*100+1, |i| {
match (i % 4) {
1 => 0x10u8,
0 => i as u8,
_ => 0u8
}
});
let mut sum = 0u;
bh.iter(|| {
let mut i = 1;
while (i < data.len()) {
sum += reader::vuint_at(data, i).val;
i += 4;
}
});
}
}