diff options
| author | Carl-Anton Ingmarsson <mail@carlanton.se> | 2014-01-02 19:48:30 +0100 |
|---|---|---|
| committer | Carl-Anton Ingmarsson <mail@carlanton.se> | 2014-01-02 23:22:47 +0100 |
| commit | 3250e655007a2140898d46c04df0f48c2f149dd2 (patch) | |
| tree | 75331804ad966fffbe66cf12f0b00c3bc60ce99e | |
| parent | 0df9b850ac1ed3abd0ff5abfbb716af83501dd5a (diff) | |
| download | rust-3250e655007a2140898d46c04df0f48c2f149dd2.tar.gz rust-3250e655007a2140898d46c04df0f48c2f149dd2.zip | |
libextra: Add benchmarks for ebml::reader::vuint_at()
| -rw-r--r-- | src/libextra/ebml.rs | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/libextra/ebml.rs b/src/libextra/ebml.rs index b63f7e495b9..4a47af46afe 100644 --- a/src/libextra/ebml.rs +++ b/src/libextra/ebml.rs @@ -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; + } + }); + } +} |
