#![feature(test)]
extern crate test;
use test::Bencher;
use test::black_box;
static NO_ESCAPES : &'static str = r##"abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdef
fabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdeffabcdefabcdefabcdefabcdefabcdefabcdefabcdefa
fabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdeffabcdefabcdefabcdefabcdefabcdefabcdefabcdefa
fabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdeffabcdefabcdefabcdefabcdefabcdefabcdefabcdefa
fabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdeffabcdefabcdefabcdefabcdefabcdefabcdefabcdefa
fabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdeffabcdefabcdefabcdefabcdefabcdefabcdefabcdefa
fabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdeffabcdefabcdefabcdefabcdefabcdefabcdefabcdefa
fabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdeffabcdefabcdefabcdefabcdefabcdefabcdefabcdefa
fabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdeffabcdefabcdefabcdefabcdefabcdefabcdefabcdefa
fabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdeffabcdefabcdefabcdefabcdefabcdefabcdefabcdefa
fabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdeffabcdefabcdefabcdefabcdefabcdefabcdefabc"##;
#[bench]
fn no_escape_chars(b: &mut Bencher){
b.bytes = NO_ESCAPES.len() as u64;
b.iter(||{
for _ in NO_ESCAPES.chars() {
black_box(());
}
})
}
#[bench]
fn no_escape_bytes(b: &mut Bencher){
b.bytes = NO_ESCAPES.len() as u64;
b.iter(||{
for _ in NO_ESCAPES.bytes() {
black_box(());
}
})
}
#[bench]
fn no_escape_bytes_filter(b: &mut Bencher){
b.bytes = NO_ESCAPES.len() as u64;
b.iter(||{
let mut iter = NO_ESCAPES.bytes();
loop {
match black_box(iter.next()) {
Some(b'&') => 1,
Some(_) => 2,
None => break
};
}
})
}