Skip to content

Commit 3250e65

Browse files
committed
libextra: Add benchmarks for ebml::reader::vuint_at()
1 parent 0df9b85 commit 3250e65

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

src/libextra/ebml.rs

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -960,3 +960,87 @@ mod tests {
960960
test_v(Some(3));
961961
}
962962
}
963+
964+
#[cfg(test)]
965+
mod bench {
966+
use ebml::reader;
967+
use test::BenchHarness;
968+
969+
#[bench]
970+
pub fn vuint_at_A_aligned(bh: &mut BenchHarness) {
971+
use std::vec;
972+
let data = vec::from_fn(4*100, |i| {
973+
match (i % 2) {
974+
0 => 0x80u8,
975+
_ => i as u8,
976+
}
977+
});
978+
let mut sum = 0u;
979+
bh.iter(|| {
980+
let mut i = 0;
981+
while (i < data.len()) {
982+
sum += reader::vuint_at(data, i).val;
983+
i += 4;
984+
}
985+
});
986+
}
987+
988+
#[bench]
989+
pub fn vuint_at_A_unaligned(bh: &mut BenchHarness) {
990+
use std::vec;
991+
let data = vec::from_fn(4*100+1, |i| {
992+
match (i % 2) {
993+
1 => 0x80u8,
994+
_ => i as u8
995+
}
996+
});
997+
let mut sum = 0u;
998+
bh.iter(|| {
999+
let mut i = 1;
1000+
while (i < data.len()) {
1001+
sum += reader::vuint_at(data, i).val;
1002+
i += 4;
1003+
}
1004+
});
1005+
}
1006+
1007+
#[bench]
1008+
pub fn vuint_at_D_aligned(bh: &mut BenchHarness) {
1009+
use std::vec;
1010+
let data = vec::from_fn(4*100, |i| {
1011+
match (i % 4) {
1012+
0 => 0x10u8,
1013+
3 => i as u8,
1014+
_ => 0u8
1015+
}
1016+
});
1017+
let mut sum = 0u;
1018+
bh.iter(|| {
1019+
let mut i = 0;
1020+
while (i < data.len()) {
1021+
sum += reader::vuint_at(data, i).val;
1022+
i += 4;
1023+
}
1024+
});
1025+
}
1026+
1027+
#[bench]
1028+
pub fn vuint_at_D_unaligned(bh: &mut BenchHarness) {
1029+
use std::vec;
1030+
let data = vec::from_fn(4*100+1, |i| {
1031+
match (i % 4) {
1032+
1 => 0x10u8,
1033+
0 => i as u8,
1034+
_ => 0u8
1035+
}
1036+
});
1037+
let mut sum = 0u;
1038+
bh.iter(|| {
1039+
let mut i = 1;
1040+
while (i < data.len()) {
1041+
sum += reader::vuint_at(data, i).val;
1042+
i += 4;
1043+
}
1044+
});
1045+
}
1046+
}

0 commit comments

Comments
 (0)