8 fn bench_data() -> Vec
<u8> { iter::repeat(b'z').take(10000).collect() }
11 fn iterator_memchr(b
: &mut test
::Bencher
) {
12 let haystack
= bench_data();
15 assert
!(haystack
.iter().position(|&b
| b
== needle
).is_none());
17 b
.bytes
= haystack
.len() as u64;
21 fn optimized_memchr(b
: &mut test
::Bencher
) {
22 let haystack
= bench_data();
25 assert
!(memchr
::memchr(needle
, &haystack
).is_none());
27 b
.bytes
= haystack
.len() as u64;
31 fn iterator_memrchr(b
: &mut test
::Bencher
) {
32 let haystack
= bench_data();
35 assert
!(haystack
.iter().rposition(|&b
| b
== needle
).is_none());
37 b
.bytes
= haystack
.len() as u64;
41 fn optimized_memrchr(b
: &mut test
::Bencher
) {
42 let haystack
= bench_data();
45 assert
!(memchr
::memrchr(needle
, &haystack
).is_none());
47 b
.bytes
= haystack
.len() as u64;
51 fn iterator_memchr2(b
: &mut test
::Bencher
) {
52 let haystack
= bench_data();
53 let (needle1
, needle2
) = (b'a'
, b'b'
);
55 assert
!(haystack
.iter().position(|&b
| {
56 b
== needle1
|| b
== needle2
59 b
.bytes
= haystack
.len() as u64;
63 fn manual_memchr2(b
: &mut test
::Bencher
) {
67 ) -> Option
<(usize, usize)> {
68 for (hi
, &b
) in text
.iter().enumerate() {
69 if sparse
[b
as usize] {
70 return Some((hi
, hi
+1));
76 let haystack
= bench_data();
77 let mut sparse
= vec
![false; 256];
78 sparse
[b'a'
as usize] = true;
79 sparse
[b'b'
as usize] = true;
81 assert
!(find_singles(&sparse
, &haystack
).is_none());
83 b
.bytes
= haystack
.len() as u64;
87 fn optimized_memchr2(b
: &mut test
::Bencher
) {
88 let haystack
= bench_data();
89 let (needle1
, needle2
) = (b'a'
, b'b'
);
91 assert
!(memchr
::memchr2(needle1
, needle2
, &haystack
).is_none());
93 b
.bytes
= haystack
.len() as u64;
97 fn iterator_memchr3(b
: &mut test
::Bencher
) {
98 let haystack
= bench_data();
99 let (needle1
, needle2
, needle3
) = (b'a'
, b'b'
, b'c'
);
101 assert
!(haystack
.iter().position(|&b
| {
102 b
== needle1
|| b
== needle2
|| b
== needle3
105 b
.bytes
= haystack
.len() as u64;
109 fn optimized_memchr3(b
: &mut test
::Bencher
) {
110 let haystack
= bench_data();
111 let (needle1
, needle2
, needle3
) = (b'a'
, b'b'
, b'c'
);
113 assert
!(memchr
::memchr3(
114 needle1
, needle2
, needle3
, &haystack
).is_none());
116 b
.bytes
= haystack
.len() as u64;