11#[ macro_use]
22extern crate criterion;
33use criterion:: { BenchmarkId , Criterion } ;
4+ use flate2:: read:: GzDecoder ;
45use redirectionio:: action:: { Action , UnitTrace } ;
56use redirectionio:: api:: { Rule , RulesMessage } ;
67use redirectionio:: http:: Request ;
78use redirectionio:: router:: { Router , RouterConfig } ;
8- use std:: fs:: read_to_string ;
9+ use std:: fs:: File ;
910
1011fn create_router ( filename : String , config : & RouterConfig ) -> Router < Rule > {
11- let content = read_to_string ( filename) . expect ( "Cannot open file" ) ;
12- let rules: RulesMessage = serde_json:: from_str ( content . as_str ( ) ) . expect ( "Cannot deserialize" ) ;
13- let mut router = Router :: < Rule > :: default ( ) ;
12+ let content_gzip = File :: open ( filename. clone ( ) ) . expect ( "Cannot open file" ) ;
13+ let rules: RulesMessage = serde_json:: from_reader ( GzDecoder :: new ( content_gzip ) ) . expect ( "Cannot deserialize" ) ;
14+ let mut router = Router :: < Rule > :: from_config ( config . clone ( ) ) ;
1415
1516 for rule in rules. rules {
16- router. insert ( rule. into_route ( config ) )
17+ router. insert ( rule)
1718 }
1819
1920 router
2021}
2122
2223fn no_match_bench ( c : & mut Criterion ) {
2324 let files = vec ! [
24- "../bench-files/large-rules-1k.json" . to_string( ) ,
25- "../bench-files/large-rules-10k.json" . to_string( ) ,
26- "../bench-files/large-rules-50k.json" . to_string( ) ,
27- "../bench-files/large-rules-150k.json" . to_string( ) ,
28- "../bench-files/large-rules-200k.json" . to_string( ) ,
25+ "../bench-files/large-rules-1k.json.gz" . to_string( ) ,
26+ "../bench-files/large-rules-10k.json.gz" . to_string( ) ,
27+ "../bench-files/large-rules-50k.json.gz" . to_string( ) ,
28+ "../bench-files/large-rules-150k.json.gz" . to_string( ) ,
29+ "../bench-files/large-rules-200k.json.gz" . to_string( ) ,
30+ "../bench-files/large-rules-210k.json.gz" . to_string( ) ,
2931 ] ;
3032
3133 let mut group = c. benchmark_group ( "no_match" ) ;
@@ -48,11 +50,12 @@ fn no_match_bench(c: &mut Criterion) {
4850
4951fn no_match_cache_bench ( c : & mut Criterion ) {
5052 let files = vec ! [
51- "../bench-files/large-rules-1k.json" . to_string( ) ,
52- "../bench-files/large-rules-10k.json" . to_string( ) ,
53- "../bench-files/large-rules-50k.json" . to_string( ) ,
54- "../bench-files/large-rules-150k.json" . to_string( ) ,
55- "../bench-files/large-rules-200k.json" . to_string( ) ,
53+ "../bench-files/large-rules-1k.json.gz" . to_string( ) ,
54+ "../bench-files/large-rules-10k.json.gz" . to_string( ) ,
55+ "../bench-files/large-rules-50k.json.gz" . to_string( ) ,
56+ "../bench-files/large-rules-150k.json.gz" . to_string( ) ,
57+ "../bench-files/large-rules-200k.json.gz" . to_string( ) ,
58+ "../bench-files/large-rules-210k.json.gz" . to_string( ) ,
5659 ] ;
5760
5861 let mut group = c. benchmark_group ( "no_match_cache" ) ;
@@ -77,7 +80,7 @@ fn no_match_cache_bench(c: &mut Criterion) {
7780
7881fn match_rule_in_200k ( c : & mut Criterion ) {
7982 let config = RouterConfig :: default ( ) ;
80- let mut router = create_router ( "../bench-files/large-rules-200k.json" . to_string ( ) , & config) ;
83+ let mut router = create_router ( "../bench-files/large-rules-200k.json.gz " . to_string ( ) , & config) ;
8184 let request = Request :: from_config (
8285 & config,
8386 "/sites/default/files/image-gallery/lowtideonuseppaimage000000edited_0.jpg" . to_string ( ) ,
@@ -104,7 +107,7 @@ fn match_rule_in_200k(c: &mut Criterion) {
104107
105108fn build_action_rule_in_200k ( c : & mut Criterion ) {
106109 let config = RouterConfig :: default ( ) ;
107- let mut router = create_router ( "../bench-files/large-rules-200k.json" . to_string ( ) , & config) ;
110+ let mut router = create_router ( "../bench-files/large-rules-200k.json.gz " . to_string ( ) , & config) ;
108111 let request = Request :: from_config (
109112 & config,
110113 "/sites/default/files/image-gallery/lowtideonuseppaimage000000edited_0.jpg" . to_string ( ) ,
@@ -156,7 +159,7 @@ fn build_action_rule_in_200k(c: &mut Criterion) {
156159
157160fn impact ( c : & mut Criterion ) {
158161 let config = RouterConfig :: default ( ) ;
159- let mut router = create_router ( "../bench-files/large-rules-200k.json" . to_string ( ) , & config) ;
162+ let mut router = create_router ( "../bench-files/large-rules-200k.json.gz " . to_string ( ) , & config) ;
160163 let request = Request :: from_config (
161164 & config,
162165 "/sites/default/files/image-gallery/lowtideonuseppaimage000000edited_0.jpg" . to_string ( ) ,
0 commit comments