diff --git a/src/fastfield/multivalued/mod.rs b/src/fastfield/multivalued/mod.rs index 33a278776..0a6010200 100644 --- a/src/fastfield/multivalued/mod.rs +++ b/src/fastfield/multivalued/mod.rs @@ -428,7 +428,7 @@ mod bench { let write: WritePtr = directory.open_write(Path::new("test")).unwrap(); let mut serializer = CompositeFastFieldSerializer::from_write(write).unwrap(); let mut fast_field_writers = FastFieldsWriter::from_schema(&schema); - for block in &multi_values(num_docs, 1) { + for block in &multi_values(num_docs, 3) { let mut doc = Document::new(); for val in block { doc.add_u64(field, *val); @@ -469,4 +469,34 @@ mod bench { }); } } + + #[bench] + fn bench_multi_value_ff_creation(b: &mut Bencher) { + // 3 million ff entries + let num_docs = 1_000_000; + let multi_values = multi_values(num_docs, 3); + + b.iter(|| { + let directory: RamDirectory = RamDirectory::create(); + let options = NumericOptions::default().set_fast(Cardinality::MultiValues); + let mut schema_builder = Schema::builder(); + let field = schema_builder.add_u64_field("field", options); + let schema = schema_builder.build(); + + let write: WritePtr = directory.open_write(Path::new("test")).unwrap(); + let mut serializer = CompositeFastFieldSerializer::from_write(write).unwrap(); + let mut fast_field_writers = FastFieldsWriter::from_schema(&schema); + for block in &multi_values { + let mut doc = Document::new(); + for val in block { + doc.add_u64(field, *val); + } + fast_field_writers.add_document(&doc); + } + fast_field_writers + .serialize(&mut serializer, &HashMap::new(), None) + .unwrap(); + serializer.close().unwrap(); + }); + } }