@@ -100,8 +100,14 @@ fn xml5(c: &mut Criterion) {
100
100
} ) ;
101
101
group. bench_function ( "memchr" , |b| {
102
102
b. iter ( || {
103
- memchr:: memchr3 ( b'<' , b'>' , b'&' , haystack. as_bytes ( ) )
104
- . or_else ( || memchr:: memchr2 ( b'\'' , b'"' , haystack. as_bytes ( ) ) )
103
+ match (
104
+ memchr:: memchr3 ( b'<' , b'>' , b'&' , haystack. as_bytes ( ) ) ,
105
+ memchr:: memchr2 ( b'\'' , b'"' , haystack. as_bytes ( ) ) ,
106
+ ) {
107
+ ( None , rhs) => rhs,
108
+ ( lhs, None ) => lhs,
109
+ ( Some ( lhs) , Some ( rhs) ) => Some ( lhs. min ( rhs) ) ,
110
+ }
105
111
} ) ;
106
112
} ) ;
107
113
}
@@ -172,12 +178,15 @@ fn big_16(c: &mut Criterion) {
172
178
} ) ;
173
179
group. bench_function ( "memchr" , |b| {
174
180
b. iter ( || {
175
- memchr:: memchr3 ( b'A' , b'B' , b'C' , haystack. as_bytes ( ) )
176
- . or_else ( || memchr:: memchr3 ( b'D' , b'E' , b'F' , haystack. as_bytes ( ) ) )
177
- . or_else ( || memchr:: memchr3 ( b'G' , b'H' , b'I' , haystack. as_bytes ( ) ) )
178
- . or_else ( || memchr:: memchr3 ( b'J' , b'K' , b'L' , haystack. as_bytes ( ) ) )
179
- . or_else ( || memchr:: memchr3 ( b'M' , b'N' , b'O' , haystack. as_bytes ( ) ) )
180
- . or_else ( || memchr:: memchr ( b'P' , haystack. as_bytes ( ) ) )
181
+ let indexes = [
182
+ memchr:: memchr3 ( b'A' , b'B' , b'C' , haystack. as_bytes ( ) ) ,
183
+ memchr:: memchr3 ( b'D' , b'E' , b'F' , haystack. as_bytes ( ) ) ,
184
+ memchr:: memchr3 ( b'G' , b'H' , b'I' , haystack. as_bytes ( ) ) ,
185
+ memchr:: memchr3 ( b'J' , b'K' , b'L' , haystack. as_bytes ( ) ) ,
186
+ memchr:: memchr3 ( b'M' , b'N' , b'O' , haystack. as_bytes ( ) ) ,
187
+ memchr:: memchr ( b'P' , haystack. as_bytes ( ) ) ,
188
+ ] ;
189
+ indexes. iter ( ) . copied ( ) . min_by_key ( |x| x. unwrap_or ( usize:: MAX ) ) . unwrap ( )
181
190
} )
182
191
} ) ;
183
192
}
0 commit comments