@@ -428,7 +428,7 @@ mod bench {
428
428
let write: WritePtr = directory. open_write ( Path :: new ( "test" ) ) . unwrap ( ) ;
429
429
let mut serializer = CompositeFastFieldSerializer :: from_write ( write) . unwrap ( ) ;
430
430
let mut fast_field_writers = FastFieldsWriter :: from_schema ( & schema) ;
431
- for block in & multi_values ( num_docs, 1 ) {
431
+ for block in & multi_values ( num_docs, 3 ) {
432
432
let mut doc = Document :: new ( ) ;
433
433
for val in block {
434
434
doc. add_u64 ( field, * val) ;
@@ -469,4 +469,34 @@ mod bench {
469
469
} ) ;
470
470
}
471
471
}
472
+
473
+ #[ bench]
474
+ fn bench_multi_value_ff_creation ( b : & mut Bencher ) {
475
+ // 3 million ff entries
476
+ let num_docs = 1_000_000 ;
477
+ let multi_values = multi_values ( num_docs, 3 ) ;
478
+
479
+ b. iter ( || {
480
+ let directory: RamDirectory = RamDirectory :: create ( ) ;
481
+ let options = NumericOptions :: default ( ) . set_fast ( Cardinality :: MultiValues ) ;
482
+ let mut schema_builder = Schema :: builder ( ) ;
483
+ let field = schema_builder. add_u64_field ( "field" , options) ;
484
+ let schema = schema_builder. build ( ) ;
485
+
486
+ let write: WritePtr = directory. open_write ( Path :: new ( "test" ) ) . unwrap ( ) ;
487
+ let mut serializer = CompositeFastFieldSerializer :: from_write ( write) . unwrap ( ) ;
488
+ let mut fast_field_writers = FastFieldsWriter :: from_schema ( & schema) ;
489
+ for block in & multi_values {
490
+ let mut doc = Document :: new ( ) ;
491
+ for val in block {
492
+ doc. add_u64 ( field, * val) ;
493
+ }
494
+ fast_field_writers. add_document ( & doc) ;
495
+ }
496
+ fast_field_writers
497
+ . serialize ( & mut serializer, & HashMap :: new ( ) , None )
498
+ . unwrap ( ) ;
499
+ serializer. close ( ) . unwrap ( ) ;
500
+ } ) ;
501
+ }
472
502
}
0 commit comments