@@ -31,48 +31,43 @@ fn setup_index() -> Index {
3131}
3232
3333fn indexing_songs_default ( c : & mut Criterion ) {
34- let index = setup_index ( ) ;
35-
36- let update_builder = UpdateBuilder :: new ( 0 ) ;
37- let mut wtxn = index. write_txn ( ) . unwrap ( ) ;
38- let mut builder = update_builder. settings ( & mut wtxn, & index) ;
39-
40- builder. set_primary_key ( "id" . to_owned ( ) ) ;
41- let displayed_fields = [ "title" , "album" , "artist" , "genre" , "country" , "released" , "duration" ]
42- . iter ( )
43- . map ( |s| s. to_string ( ) )
44- . collect ( ) ;
45- builder. set_displayed_fields ( displayed_fields) ;
46-
47- let searchable_fields = [ "title" , "album" , "artist" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
48- builder. set_searchable_fields ( searchable_fields) ;
49-
50- let faceted_fields = [ "released-timestamp" , "duration-float" , "genre" , "country" , "artist" ]
51- . iter ( )
52- . map ( |s| s. to_string ( ) )
53- . collect ( ) ;
54- builder. set_filterable_fields ( faceted_fields) ;
55- builder. execute ( |_, _| ( ) ) . unwrap ( ) ;
56- wtxn. commit ( ) . unwrap ( ) ;
57-
58- let index_ref = & index;
59-
6034 let mut group = c. benchmark_group ( "indexing" ) ;
6135 group. sample_size ( 10 ) ;
6236 group. bench_function ( "Indexing songs with default settings" , |b| {
6337 b. iter_with_setup (
6438 move || {
39+ let index = setup_index ( ) ;
40+
6541 let update_builder = UpdateBuilder :: new ( 0 ) ;
66- let mut wtxn = index_ref. write_txn ( ) . unwrap ( ) ;
67- let builder = update_builder. delete_documents ( & mut wtxn, index_ref) . unwrap ( ) ;
68- builder. execute ( ) . unwrap ( ) ;
42+ let mut wtxn = index. write_txn ( ) . unwrap ( ) ;
43+ let mut builder = update_builder. settings ( & mut wtxn, & index) ;
44+
45+ builder. set_primary_key ( "id" . to_owned ( ) ) ;
46+ let displayed_fields =
47+ [ "title" , "album" , "artist" , "genre" , "country" , "released" , "duration" ]
48+ . iter ( )
49+ . map ( |s| s. to_string ( ) )
50+ . collect ( ) ;
51+ builder. set_displayed_fields ( displayed_fields) ;
52+
53+ let searchable_fields =
54+ [ "title" , "album" , "artist" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
55+ builder. set_searchable_fields ( searchable_fields) ;
56+
57+ let faceted_fields =
58+ [ "released-timestamp" , "duration-float" , "genre" , "country" , "artist" ]
59+ . iter ( )
60+ . map ( |s| s. to_string ( ) )
61+ . collect ( ) ;
62+ builder. set_filterable_fields ( faceted_fields) ;
63+ builder. execute ( |_, _| ( ) ) . unwrap ( ) ;
6964 wtxn. commit ( ) . unwrap ( ) ;
70- ( )
65+ index
7166 } ,
72- move |_ | {
67+ move |index | {
7368 let update_builder = UpdateBuilder :: new ( 0 ) ;
74- let mut wtxn = index_ref . write_txn ( ) . unwrap ( ) ;
75- let mut builder = update_builder. index_documents ( & mut wtxn, index_ref ) ;
69+ let mut wtxn = index . write_txn ( ) . unwrap ( ) ;
70+ let mut builder = update_builder. index_documents ( & mut wtxn, & index ) ;
7671
7772 builder. update_format ( UpdateFormat :: Csv ) ;
7873 builder. index_documents_method ( IndexDocumentsMethod :: ReplaceDocuments ) ;
@@ -82,53 +77,48 @@ fn indexing_songs_default(c: &mut Criterion) {
8277 ) ) ;
8378 builder. execute ( reader, |_, _| ( ) ) . unwrap ( ) ;
8479 wtxn. commit ( ) . unwrap ( ) ;
80+
81+ index. prepare_for_closing ( ) . wait ( ) ;
8582 } ,
8683 )
8784 } ) ;
88-
89- index. prepare_for_closing ( ) . wait ( ) ;
9085}
9186
9287fn indexing_songs_without_faceted_numbers ( c : & mut Criterion ) {
93- let index = setup_index ( ) ;
94-
95- let update_builder = UpdateBuilder :: new ( 0 ) ;
96- let mut wtxn = index. write_txn ( ) . unwrap ( ) ;
97- let mut builder = update_builder. settings ( & mut wtxn, & index) ;
98-
99- builder. set_primary_key ( "id" . to_owned ( ) ) ;
100- let displayed_fields = [ "title" , "album" , "artist" , "genre" , "country" , "released" , "duration" ]
101- . iter ( )
102- . map ( |s| s. to_string ( ) )
103- . collect ( ) ;
104- builder. set_displayed_fields ( displayed_fields) ;
105-
106- let searchable_fields = [ "title" , "album" , "artist" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
107- builder. set_searchable_fields ( searchable_fields) ;
108-
109- let faceted_fields = [ "genre" , "country" , "artist" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
110- builder. set_filterable_fields ( faceted_fields) ;
111- builder. execute ( |_, _| ( ) ) . unwrap ( ) ;
112- wtxn. commit ( ) . unwrap ( ) ;
113-
114- let index_ref = & index;
115-
11688 let mut group = c. benchmark_group ( "indexing" ) ;
11789 group. sample_size ( 10 ) ;
11890 group. bench_function ( "Indexing songs without faceted numbers" , |b| {
11991 b. iter_with_setup (
12092 move || {
93+ let index = setup_index ( ) ;
94+
12195 let update_builder = UpdateBuilder :: new ( 0 ) ;
122- let mut wtxn = index_ref. write_txn ( ) . unwrap ( ) ;
123- let builder = update_builder. delete_documents ( & mut wtxn, index_ref) . unwrap ( ) ;
124- builder. execute ( ) . unwrap ( ) ;
96+ let mut wtxn = index. write_txn ( ) . unwrap ( ) ;
97+ let mut builder = update_builder. settings ( & mut wtxn, & index) ;
98+
99+ builder. set_primary_key ( "id" . to_owned ( ) ) ;
100+ let displayed_fields =
101+ [ "title" , "album" , "artist" , "genre" , "country" , "released" , "duration" ]
102+ . iter ( )
103+ . map ( |s| s. to_string ( ) )
104+ . collect ( ) ;
105+ builder. set_displayed_fields ( displayed_fields) ;
106+
107+ let searchable_fields =
108+ [ "title" , "album" , "artist" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
109+ builder. set_searchable_fields ( searchable_fields) ;
110+
111+ let faceted_fields =
112+ [ "genre" , "country" , "artist" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
113+ builder. set_filterable_fields ( faceted_fields) ;
114+ builder. execute ( |_, _| ( ) ) . unwrap ( ) ;
125115 wtxn. commit ( ) . unwrap ( ) ;
126- ( )
116+ index
127117 } ,
128- move |_ | {
118+ move |index | {
129119 let update_builder = UpdateBuilder :: new ( 0 ) ;
130- let mut wtxn = index_ref . write_txn ( ) . unwrap ( ) ;
131- let mut builder = update_builder. index_documents ( & mut wtxn, index_ref ) ;
120+ let mut wtxn = index . write_txn ( ) . unwrap ( ) ;
121+ let mut builder = update_builder. index_documents ( & mut wtxn, & index ) ;
132122
133123 builder. update_format ( UpdateFormat :: Csv ) ;
134124 builder. index_documents_method ( IndexDocumentsMethod :: ReplaceDocuments ) ;
@@ -138,49 +128,44 @@ fn indexing_songs_without_faceted_numbers(c: &mut Criterion) {
138128 ) ) ;
139129 builder. execute ( reader, |_, _| ( ) ) . unwrap ( ) ;
140130 wtxn. commit ( ) . unwrap ( ) ;
131+
132+ index. prepare_for_closing ( ) . wait ( ) ;
141133 } ,
142134 )
143135 } ) ;
144- index. prepare_for_closing ( ) . wait ( ) ;
145136}
146137
147138fn indexing_songs_without_faceted_fields ( c : & mut Criterion ) {
148- let index = setup_index ( ) ;
149-
150- let update_builder = UpdateBuilder :: new ( 0 ) ;
151- let mut wtxn = index. write_txn ( ) . unwrap ( ) ;
152- let mut builder = update_builder. settings ( & mut wtxn, & index) ;
153-
154- builder. set_primary_key ( "id" . to_owned ( ) ) ;
155- let displayed_fields = [ "title" , "album" , "artist" , "genre" , "country" , "released" , "duration" ]
156- . iter ( )
157- . map ( |s| s. to_string ( ) )
158- . collect ( ) ;
159- builder. set_displayed_fields ( displayed_fields) ;
160-
161- let searchable_fields = [ "title" , "album" , "artist" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
162- builder. set_searchable_fields ( searchable_fields) ;
163- builder. execute ( |_, _| ( ) ) . unwrap ( ) ;
164- wtxn. commit ( ) . unwrap ( ) ;
165-
166- let index_ref = & index;
167-
168139 let mut group = c. benchmark_group ( "indexing" ) ;
169140 group. sample_size ( 10 ) ;
170141 group. bench_function ( "Indexing songs without any facets" , |b| {
171142 b. iter_with_setup (
172143 move || {
144+ let index = setup_index ( ) ;
145+
173146 let update_builder = UpdateBuilder :: new ( 0 ) ;
174- let mut wtxn = index_ref. write_txn ( ) . unwrap ( ) ;
175- let builder = update_builder. delete_documents ( & mut wtxn, index_ref) . unwrap ( ) ;
176- builder. execute ( ) . unwrap ( ) ;
147+ let mut wtxn = index. write_txn ( ) . unwrap ( ) ;
148+ let mut builder = update_builder. settings ( & mut wtxn, & index) ;
149+
150+ builder. set_primary_key ( "id" . to_owned ( ) ) ;
151+ let displayed_fields =
152+ [ "title" , "album" , "artist" , "genre" , "country" , "released" , "duration" ]
153+ . iter ( )
154+ . map ( |s| s. to_string ( ) )
155+ . collect ( ) ;
156+ builder. set_displayed_fields ( displayed_fields) ;
157+
158+ let searchable_fields =
159+ [ "title" , "album" , "artist" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
160+ builder. set_searchable_fields ( searchable_fields) ;
161+ builder. execute ( |_, _| ( ) ) . unwrap ( ) ;
177162 wtxn. commit ( ) . unwrap ( ) ;
178- ( )
163+ index
179164 } ,
180- move |_ | {
165+ move |index | {
181166 let update_builder = UpdateBuilder :: new ( 0 ) ;
182- let mut wtxn = index_ref . write_txn ( ) . unwrap ( ) ;
183- let mut builder = update_builder. index_documents ( & mut wtxn, index_ref ) ;
167+ let mut wtxn = index . write_txn ( ) . unwrap ( ) ;
168+ let mut builder = update_builder. index_documents ( & mut wtxn, & index ) ;
184169
185170 builder. update_format ( UpdateFormat :: Csv ) ;
186171 builder. index_documents_method ( IndexDocumentsMethod :: ReplaceDocuments ) ;
@@ -190,49 +175,43 @@ fn indexing_songs_without_faceted_fields(c: &mut Criterion) {
190175 ) ) ;
191176 builder. execute ( reader, |_, _| ( ) ) . unwrap ( ) ;
192177 wtxn. commit ( ) . unwrap ( ) ;
178+
179+ index. prepare_for_closing ( ) . wait ( ) ;
193180 } ,
194181 )
195182 } ) ;
196- index. prepare_for_closing ( ) . wait ( ) ;
197183}
198184
199185fn indexing_wiki ( c : & mut Criterion ) {
200- let index = setup_index ( ) ;
201-
202- let update_builder = UpdateBuilder :: new ( 0 ) ;
203- let mut wtxn = index. write_txn ( ) . unwrap ( ) ;
204- let mut builder = update_builder. settings ( & mut wtxn, & index) ;
205-
206- builder. set_primary_key ( "id" . to_owned ( ) ) ;
207- let displayed_fields = [ "title" , "body" , "url" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
208- builder. set_displayed_fields ( displayed_fields) ;
209-
210- let searchable_fields = [ "title" , "body" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
211- builder. set_searchable_fields ( searchable_fields) ;
212-
213- // there is NO faceted fields at all
214-
215- builder. execute ( |_, _| ( ) ) . unwrap ( ) ;
216- wtxn. commit ( ) . unwrap ( ) ;
217-
218- let index_ref = & index;
219-
220186 let mut group = c. benchmark_group ( "indexing" ) ;
221187 group. sample_size ( 10 ) ;
222188 group. bench_function ( "Indexing wiki" , |b| {
223189 b. iter_with_setup (
224190 move || {
191+ let index = setup_index ( ) ;
192+
225193 let update_builder = UpdateBuilder :: new ( 0 ) ;
226- let mut wtxn = index_ref. write_txn ( ) . unwrap ( ) ;
227- let builder = update_builder. delete_documents ( & mut wtxn, index_ref) . unwrap ( ) ;
228- builder. execute ( ) . unwrap ( ) ;
194+ let mut wtxn = index. write_txn ( ) . unwrap ( ) ;
195+ let mut builder = update_builder. settings ( & mut wtxn, & index) ;
196+
197+ builder. set_primary_key ( "id" . to_owned ( ) ) ;
198+ let displayed_fields =
199+ [ "title" , "body" , "url" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
200+ builder. set_displayed_fields ( displayed_fields) ;
201+
202+ let searchable_fields = [ "title" , "body" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
203+ builder. set_searchable_fields ( searchable_fields) ;
204+
205+ // there is NO faceted fields at all
206+
207+ builder. execute ( |_, _| ( ) ) . unwrap ( ) ;
229208 wtxn. commit ( ) . unwrap ( ) ;
230- ( )
209+ index
231210 } ,
232- move |_ | {
211+ move |index | {
233212 let update_builder = UpdateBuilder :: new ( 0 ) ;
234- let mut wtxn = index_ref . write_txn ( ) . unwrap ( ) ;
235- let mut builder = update_builder. index_documents ( & mut wtxn, index_ref ) ;
213+ let mut wtxn = index . write_txn ( ) . unwrap ( ) ;
214+ let mut builder = update_builder. index_documents ( & mut wtxn, & index ) ;
236215
237216 builder. update_format ( UpdateFormat :: Csv ) ;
238217 builder. index_documents_method ( IndexDocumentsMethod :: ReplaceDocuments ) ;
@@ -242,65 +221,60 @@ fn indexing_wiki(c: &mut Criterion) {
242221 ) ) ;
243222 builder. execute ( reader, |_, _| ( ) ) . unwrap ( ) ;
244223 wtxn. commit ( ) . unwrap ( ) ;
224+
225+ index. prepare_for_closing ( ) . wait ( ) ;
245226 } ,
246227 )
247228 } ) ;
248- index. prepare_for_closing ( ) . wait ( ) ;
249229}
250230
251231fn indexing_movies_default ( c : & mut Criterion ) {
252- let index = setup_index ( ) ;
253-
254- let update_builder = UpdateBuilder :: new ( 0 ) ;
255- let mut wtxn = index. write_txn ( ) . unwrap ( ) ;
256- let mut builder = update_builder. settings ( & mut wtxn, & index) ;
257-
258- builder. set_primary_key ( "id" . to_owned ( ) ) ;
259- let displayed_fields = [ "title" , "poster" , "overview" , "release_date" , "genres" ]
260- . iter ( )
261- . map ( |s| s. to_string ( ) )
262- . collect ( ) ;
263- builder. set_displayed_fields ( displayed_fields) ;
264-
265- let searchable_fields = [ "title" , "overview" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
266- builder. set_searchable_fields ( searchable_fields) ;
267-
268- let faceted_fields = [ "released_date" , "genres" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
269- builder. set_filterable_fields ( faceted_fields) ;
270-
271- builder. execute ( |_, _| ( ) ) . unwrap ( ) ;
272- wtxn. commit ( ) . unwrap ( ) ;
273-
274- let index_ref = & index;
275-
276232 let mut group = c. benchmark_group ( "indexing" ) ;
277233 group. sample_size ( 10 ) ;
278234 group. bench_function ( "Indexing movies with default settings" , |b| {
279235 b. iter_with_setup (
280236 move || {
237+ let index = setup_index ( ) ;
238+
281239 let update_builder = UpdateBuilder :: new ( 0 ) ;
282- let mut wtxn = index_ref. write_txn ( ) . unwrap ( ) ;
283- let builder = update_builder. delete_documents ( & mut wtxn, index_ref) . unwrap ( ) ;
284- builder. execute ( ) . unwrap ( ) ;
240+ let mut wtxn = index. write_txn ( ) . unwrap ( ) ;
241+ let mut builder = update_builder. settings ( & mut wtxn, & index) ;
242+
243+ builder. set_primary_key ( "id" . to_owned ( ) ) ;
244+ let displayed_fields = [ "title" , "poster" , "overview" , "release_date" , "genres" ]
245+ . iter ( )
246+ . map ( |s| s. to_string ( ) )
247+ . collect ( ) ;
248+ builder. set_displayed_fields ( displayed_fields) ;
249+
250+ let searchable_fields =
251+ [ "title" , "overview" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
252+ builder. set_searchable_fields ( searchable_fields) ;
253+
254+ let faceted_fields =
255+ [ "released_date" , "genres" ] . iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
256+ builder. set_filterable_fields ( faceted_fields) ;
257+
258+ builder. execute ( |_, _| ( ) ) . unwrap ( ) ;
285259 wtxn. commit ( ) . unwrap ( ) ;
286- ( )
260+ index
287261 } ,
288- move |_ | {
262+ move |index | {
289263 let update_builder = UpdateBuilder :: new ( 0 ) ;
290- let mut wtxn = index_ref . write_txn ( ) . unwrap ( ) ;
291- let mut builder = update_builder. index_documents ( & mut wtxn, index_ref ) ;
264+ let mut wtxn = index . write_txn ( ) . unwrap ( ) ;
265+ let mut builder = update_builder. index_documents ( & mut wtxn, & index ) ;
292266
293267 builder. update_format ( UpdateFormat :: Json ) ;
294268 builder. index_documents_method ( IndexDocumentsMethod :: ReplaceDocuments ) ;
295269 let reader = File :: open ( datasets_paths:: MOVIES )
296270 . expect ( & format ! ( "could not find the dataset in: {}" , datasets_paths:: MOVIES ) ) ;
297271 builder. execute ( reader, |_, _| ( ) ) . unwrap ( ) ;
298272 wtxn. commit ( ) . unwrap ( ) ;
273+
274+ index. prepare_for_closing ( ) . wait ( ) ;
299275 } ,
300276 )
301277 } ) ;
302-
303- index. prepare_for_closing ( ) . wait ( ) ;
304278}
305279
306280criterion_group ! (
0 commit comments