1 use regex_syntax::Parser; 2 use test::Bencher; 3 4 use regex::internal::Compiler; 5 6 #[bench] compile_simple(b: &mut Bencher)7fn compile_simple(b: &mut Bencher) { 8 b.iter(|| { 9 let re = Parser::new().parse(r"^bc(d|e)*$").unwrap(); 10 Compiler::new().compile(&[re]).unwrap() 11 }); 12 } 13 14 #[bench] compile_simple_bytes(b: &mut Bencher)15fn compile_simple_bytes(b: &mut Bencher) { 16 b.iter(|| { 17 let re = Parser::new().parse(r"^bc(d|e)*$").unwrap(); 18 Compiler::new().bytes(true).compile(&[re]).unwrap() 19 }); 20 } 21 22 #[bench] compile_simple_full(b: &mut Bencher)23fn compile_simple_full(b: &mut Bencher) { 24 b.iter(|| regex!(r"^bc(d|e)*$")); 25 } 26 27 #[bench] compile_small(b: &mut Bencher)28fn compile_small(b: &mut Bencher) { 29 b.iter(|| { 30 let re = Parser::new().parse(r"\p{L}|\p{N}|\s|.|\d").unwrap(); 31 Compiler::new().compile(&[re]).unwrap() 32 }); 33 } 34 35 #[bench] compile_small_bytes(b: &mut Bencher)36fn compile_small_bytes(b: &mut Bencher) { 37 b.iter(|| { 38 let re = Parser::new().parse(r"\p{L}|\p{N}|\s|.|\d").unwrap(); 39 Compiler::new().bytes(true).compile(&[re]).unwrap() 40 }); 41 } 42 43 #[bench] compile_small_full(b: &mut Bencher)44fn compile_small_full(b: &mut Bencher) { 45 b.iter(|| regex!(r"\p{L}|\p{N}|\s|.|\d")); 46 } 47 48 #[bench] compile_huge(b: &mut Bencher)49fn compile_huge(b: &mut Bencher) { 50 b.iter(|| { 51 let re = Parser::new().parse(r"\p{L}{50}").unwrap(); 52 Compiler::new().size_limit(1 << 30).compile(&[re]).unwrap() 53 }); 54 } 55 56 #[bench] compile_huge_bytes(b: &mut Bencher)57fn compile_huge_bytes(b: &mut Bencher) { 58 b.iter(|| { 59 let re = Parser::new().parse(r"\p{L}{50}").unwrap(); 60 Compiler::new().size_limit(1 << 30).bytes(true).compile(&[re]).unwrap() 61 }); 62 } 63 64 #[bench] compile_huge_full(b: &mut Bencher)65fn compile_huge_full(b: &mut Bencher) { 66 b.iter(|| regex!(r"\p{L}{50}")); 67 } 68