Skip to content

Commit 21c9a26

Browse files
committed
add ff creation benchmark
1 parent 56c68f5 commit 21c9a26

File tree

1 file changed

+34
-0
lines changed
  • src/fastfield/multivalued

1 file changed

+34
-0
lines changed

src/fastfield/multivalued/mod.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,7 @@ mod bench {
397397
use super::*;
398398
use crate::directory::{CompositeFile, Directory, RamDirectory, WritePtr};
399399
use crate::fastfield::{CompositeFastFieldSerializer, FastFieldsWriter};
400+
use crate::indexer::doc_id_mapping::DocIdMapping;
400401
use crate::schema::{Cardinality, NumericOptions, Schema};
401402
use crate::Document;
402403

@@ -499,4 +500,37 @@ mod bench {
499500
serializer.close().unwrap();
500501
});
501502
}
503+
504+
#[bench]
505+
fn bench_multi_value_ff_creation_with_sorting(b: &mut Bencher) {
506+
// 3 million ff entries
507+
let num_docs = 1_000_000;
508+
let multi_values = multi_values(num_docs, 3);
509+
510+
let doc_id_mapping =
511+
DocIdMapping::from_new_id_to_old_id((0..1_000_000).collect::<Vec<_>>());
512+
513+
b.iter(|| {
514+
let directory: RamDirectory = RamDirectory::create();
515+
let options = NumericOptions::default().set_fast(Cardinality::MultiValues);
516+
let mut schema_builder = Schema::builder();
517+
let field = schema_builder.add_u64_field("field", options);
518+
let schema = schema_builder.build();
519+
520+
let write: WritePtr = directory.open_write(Path::new("test")).unwrap();
521+
let mut serializer = CompositeFastFieldSerializer::from_write(write).unwrap();
522+
let mut fast_field_writers = FastFieldsWriter::from_schema(&schema);
523+
for block in &multi_values {
524+
let mut doc = Document::new();
525+
for val in block {
526+
doc.add_u64(field, *val);
527+
}
528+
fast_field_writers.add_document(&doc);
529+
}
530+
fast_field_writers
531+
.serialize(&mut serializer, &HashMap::new(), Some(&doc_id_mapping))
532+
.unwrap();
533+
serializer.close().unwrap();
534+
});
535+
}
502536
}

0 commit comments

Comments
 (0)