@@ -100,8 +100,14 @@ fn xml5(c: &mut Criterion) {
100100 } ) ;
101101 group. bench_function ( "memchr" , |b| {
102102 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+ }
105111 } ) ;
106112 } ) ;
107113}
@@ -172,12 +178,15 @@ fn big_16(c: &mut Criterion) {
172178 } ) ;
173179 group. bench_function ( "memchr" , |b| {
174180 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 ( )
181190 } )
182191 } ) ;
183192}
0 commit comments