@@ -3,7 +3,7 @@ mod utils;
3
3
4
4
use criterion:: { criterion_group, criterion_main} ;
5
5
use milli:: update:: Settings ;
6
- use utils:: Conf ;
6
+ use utils:: { IndexConf , IndexSettingsConf , SearchBenchConf } ;
7
7
8
8
#[ global_allocator]
9
9
static ALLOC : mimalloc:: MiMalloc = mimalloc:: MiMalloc ;
@@ -29,94 +29,93 @@ fn base_conf(builder: &mut Settings) {
29
29
builder. set_sortable_fields ( sortable_fields) ;
30
30
}
31
31
32
- #[ rustfmt:: skip]
33
- const BASE_CONF : Conf = Conf {
34
- dataset : datasets_paths:: SMOL_ALL_COUNTRIES ,
35
- dataset_format : "jsonl" ,
36
- queries : & [
37
- "" ,
38
- ] ,
39
- configure : base_conf,
40
- primary_key : Some ( "geonameid" ) ,
41
- ..Conf :: BASE
42
- } ;
43
-
44
32
fn bench_geo ( c : & mut criterion:: Criterion ) {
45
- #[ rustfmt:: skip]
46
- let confs = & [
47
- // A basic placeholder with no geo
48
- utils:: Conf {
49
- group_name : "placeholder with no geo" ,
50
- ..BASE_CONF
51
- } ,
52
- // Medium aglomeration: probably the most common usecase
53
- utils:: Conf {
54
- group_name : "asc sort from Lille" ,
55
- sort : Some ( vec ! [ "_geoPoint(50.62999333378238, 3.086269263384099):asc" ] ) ,
56
- ..BASE_CONF
57
- } ,
58
- utils:: Conf {
59
- group_name : "desc sort from Lille" ,
60
- sort : Some ( vec ! [ "_geoPoint(50.62999333378238, 3.086269263384099):desc" ] ) ,
61
- ..BASE_CONF
62
- } ,
63
- // Big agglomeration: a lot of documents close to our point
64
- utils:: Conf {
65
- group_name : "asc sort from Tokyo" ,
66
- sort : Some ( vec ! [ "_geoPoint(35.749512532692144, 139.61664952543356):asc" ] ) ,
67
- ..BASE_CONF
68
- } ,
69
- utils:: Conf {
70
- group_name : "desc sort from Tokyo" ,
71
- sort : Some ( vec ! [ "_geoPoint(35.749512532692144, 139.61664952543356):desc" ] ) ,
72
- ..BASE_CONF
73
- } ,
74
- // The furthest point from any civilization
75
- utils:: Conf {
76
- group_name : "asc sort from Point Nemo" ,
77
- sort : Some ( vec ! [ "_geoPoint(-48.87561645055408, -123.39275749319793):asc" ] ) ,
78
- ..BASE_CONF
79
- } ,
80
- utils:: Conf {
81
- group_name : "desc sort from Point Nemo" ,
82
- sort : Some ( vec ! [ "_geoPoint(-48.87561645055408, -123.39275749319793):desc" ] ) ,
83
- ..BASE_CONF
84
- } ,
85
- // Filters
86
- utils:: Conf {
87
- group_name : "filter of 100km from Lille" ,
88
- filter : Some ( "_geoRadius(50.62999333378238, 3.086269263384099, 100000)" ) ,
89
- ..BASE_CONF
90
- } ,
91
- utils:: Conf {
92
- group_name : "filter of 1km from Lille" ,
93
- filter : Some ( "_geoRadius(50.62999333378238, 3.086269263384099, 1000)" ) ,
94
- ..BASE_CONF
95
- } ,
96
- utils:: Conf {
97
- group_name : "filter of 100km from Tokyo" ,
98
- filter : Some ( "_geoRadius(35.749512532692144, 139.61664952543356, 100000)" ) ,
99
- ..BASE_CONF
100
- } ,
101
- utils:: Conf {
102
- group_name : "filter of 1km from Tokyo" ,
103
- filter : Some ( "_geoRadius(35.749512532692144, 139.61664952543356, 1000)" ) ,
104
- ..BASE_CONF
105
- } ,
106
- utils:: Conf {
107
- group_name : "filter of 100km from Point Nemo" ,
108
- filter : Some ( "_geoRadius(-48.87561645055408, -123.39275749319793, 100000)" ) ,
109
- ..BASE_CONF
110
- } ,
111
- utils:: Conf {
112
- group_name : "filter of 1km from Point Nemo" ,
113
- filter : Some ( "_geoRadius(-48.87561645055408, -123.39275749319793, 1000)" ) ,
114
- ..BASE_CONF
115
- } ,
116
- ] ;
33
+ let index_conf = IndexConf {
34
+ dataset : datasets_paths:: SMOL_ALL_COUNTRIES ,
35
+ dataset_format : "jsonl" ,
36
+ primary_key : Some ( "geonameid" ) ,
37
+ configure : base_conf,
38
+ ..IndexConf :: BASE
39
+ } ;
40
+
41
+ let confs = vec ! [ (
42
+ IndexSettingsConf :: BASE ,
43
+ vec![
44
+ // A basic placeholder with no geo
45
+ SearchBenchConf { group_name: "placeholder with no geo" , ..SearchBenchConf :: BASE } ,
46
+ // Medium aglomeration: probably the most common usecase
47
+ SearchBenchConf {
48
+ group_name: "asc sort from Lille" ,
49
+ sort: Some ( vec![ "_geoPoint(50.62999333378238, 3.086269263384099):asc" ] ) ,
50
+ ..SearchBenchConf :: BASE
51
+ } ,
52
+ SearchBenchConf {
53
+ group_name: "desc sort from Lille" ,
54
+ sort: Some ( vec![ "_geoPoint(50.62999333378238, 3.086269263384099):desc" ] ) ,
55
+ ..SearchBenchConf :: BASE
56
+ } ,
57
+ // Big agglomeration: a lot of documents close to our point
58
+ SearchBenchConf {
59
+ group_name: "asc sort from Tokyo" ,
60
+ sort: Some ( vec![ "_geoPoint(35.749512532692144, 139.61664952543356):asc" ] ) ,
61
+ ..SearchBenchConf :: BASE
62
+ } ,
63
+ SearchBenchConf {
64
+ group_name: "desc sort from Tokyo" ,
65
+ sort: Some ( vec![ "_geoPoint(35.749512532692144, 139.61664952543356):desc" ] ) ,
66
+ ..SearchBenchConf :: BASE
67
+ } ,
68
+ // The furthest point from any civilization
69
+ SearchBenchConf {
70
+ group_name: "asc sort from Point Nemo" ,
71
+ sort: Some ( vec![ "_geoPoint(-48.87561645055408, -123.39275749319793):asc" ] ) ,
72
+ ..SearchBenchConf :: BASE
73
+ } ,
74
+ SearchBenchConf {
75
+ group_name: "desc sort from Point Nemo" ,
76
+ sort: Some ( vec![ "_geoPoint(-48.87561645055408, -123.39275749319793):desc" ] ) ,
77
+ ..SearchBenchConf :: BASE
78
+ } ,
79
+ // Filters
80
+ SearchBenchConf {
81
+ group_name: "filter of 100km from Lille" ,
82
+ filter: Some ( "_geoRadius(50.62999333378238, 3.086269263384099, 100000)" ) ,
83
+ ..SearchBenchConf :: BASE
84
+ } ,
85
+ SearchBenchConf {
86
+ group_name: "filter of 1km from Lille" ,
87
+ filter: Some ( "_geoRadius(50.62999333378238, 3.086269263384099, 1000)" ) ,
88
+ ..SearchBenchConf :: BASE
89
+ } ,
90
+ SearchBenchConf {
91
+ group_name: "filter of 100km from Tokyo" ,
92
+ filter: Some ( "_geoRadius(35.749512532692144, 139.61664952543356, 100000)" ) ,
93
+ ..SearchBenchConf :: BASE
94
+ } ,
95
+ SearchBenchConf {
96
+ group_name: "filter of 1km from Tokyo" ,
97
+ filter: Some ( "_geoRadius(35.749512532692144, 139.61664952543356, 1000)" ) ,
98
+ ..SearchBenchConf :: BASE
99
+ } ,
100
+ SearchBenchConf {
101
+ group_name: "filter of 100km from Point Nemo" ,
102
+ filter: Some ( "_geoRadius(-48.87561645055408, -123.39275749319793, 100000)" ) ,
103
+ ..SearchBenchConf :: BASE
104
+ } ,
105
+ SearchBenchConf {
106
+ group_name: "filter of 1km from Point Nemo" ,
107
+ filter: Some ( "_geoRadius(-48.87561645055408, -123.39275749319793, 1000)" ) ,
108
+ ..SearchBenchConf :: BASE
109
+ } ,
110
+ ] ,
111
+ ) ] ;
117
112
118
- utils:: run_benches ( c, confs) ;
113
+ utils:: run_benches ( index_conf , c, & confs) ;
119
114
}
120
115
121
- criterion_group ! ( benches, bench_geo) ;
116
+ criterion_group ! (
117
+ name = benches;
118
+ config = { criterion:: Criterion :: default ( ) . sample_size( 10 ) } ;
119
+ targets = bench_geo
120
+ ) ;
122
121
criterion_main ! ( benches) ;
0 commit comments