Skip to content

Commit 84e0c75

Browse files
committed
Bench fixing
1 parent 08c4412 commit 84e0c75

File tree

1 file changed

+62
-98
lines changed

1 file changed

+62
-98
lines changed

src/fastfield/mod.rs

+62-98
Original file line numberDiff line numberDiff line change
@@ -978,140 +978,104 @@ mod tests {
978978

979979
#[cfg(all(test, feature = "unstable"))]
980980
mod bench {
981-
use std::collections::HashMap;
982-
use std::path::Path;
983-
984981
use fastfield_codecs::Column;
985982
use test::{self, Bencher};
986983

987-
use super::tests::{generate_permutation, FIELD, SCHEMA};
984+
use super::tests::generate_permutation;
988985
use super::*;
989-
use crate::directory::{CompositeFile, Directory, RamDirectory, WritePtr};
990986
use crate::fastfield::tests::generate_permutation_gcd;
991987

992988
#[bench]
993-
fn bench_intfastfield_linear_veclookup(b: &mut Bencher) {
989+
fn bench_intfastfield_jumpy_veclookup(b: &mut Bencher) {
994990
let permutation = generate_permutation();
991+
let n = permutation.len();
995992
b.iter(|| {
996-
let n = test::black_box(7000u32);
997993
let mut a = 0u64;
998-
for i in (0u32..n / 7).map(|v| v * 7) {
999-
a ^= permutation[i as usize];
994+
for _ in 0..n {
995+
a = permutation[a as usize];
1000996
}
1001997
a
1002998
});
1003999
}
10041000

10051001
#[bench]
1006-
fn bench_intfastfield_veclookup(b: &mut Bencher) {
1002+
fn bench_intfastfield_jumpy_fflookup(b: &mut Bencher) {
10071003
let permutation = generate_permutation();
1004+
let n = permutation.len();
1005+
let column = DynamicFastFieldReader::from(permutation);
10081006
b.iter(|| {
1009-
let n = test::black_box(1000u32);
10101007
let mut a = 0u64;
1011-
for _ in 0u32..n {
1012-
a = permutation[a as usize];
1008+
for _ in 0..n {
1009+
a = column.get_val(a as u64);
10131010
}
10141011
a
10151012
});
10161013
}
10171014

10181015
#[bench]
1019-
fn bench_intfastfield_linear_fflookup(b: &mut Bencher) {
1020-
let path = Path::new("test");
1016+
fn bench_intfastfield_stride7_vec(b: &mut Bencher) {
10211017
let permutation = generate_permutation();
1022-
let directory: RamDirectory = RamDirectory::create();
1023-
{
1024-
let write: WritePtr = directory.open_write(Path::new("test")).unwrap();
1025-
let mut serializer = CompositeFastFieldSerializer::from_write(write).unwrap();
1026-
let mut fast_field_writers = FastFieldsWriter::from_schema(&SCHEMA);
1027-
for &x in &permutation {
1028-
fast_field_writers.add_document(&doc!(*FIELD=>x));
1018+
let n = permutation.len();
1019+
b.iter(|| {
1020+
let mut a = 0u64;
1021+
for i in (0..n / 7).map(|val| val * 7) {
1022+
a += permutation[i as usize];
10291023
}
1030-
fast_field_writers
1031-
.serialize(&mut serializer, &HashMap::new(), None)
1032-
.unwrap();
1033-
serializer.close().unwrap();
1034-
}
1035-
let file = directory.open_read(&path).unwrap();
1036-
{
1037-
let fast_fields_composite = CompositeFile::open(&file).unwrap();
1038-
let data = fast_fields_composite.open_read(*FIELD).unwrap();
1039-
let fast_field_reader = DynamicFastFieldReader::<u64>::open(data).unwrap();
1040-
1041-
b.iter(|| {
1042-
let n = test::black_box(7000u32);
1043-
let mut a = 0u64;
1044-
for i in (0u32..n / 7).map(|val| val * 7) {
1045-
a ^= fast_field_reader.get_val(i as u64);
1046-
}
1047-
a
1048-
});
1049-
}
1024+
a
1025+
});
10501026
}
10511027

10521028
#[bench]
1053-
fn bench_intfastfield_fflookup(b: &mut Bencher) {
1054-
let path = Path::new("test");
1029+
fn bench_intfastfield_stride7_fflookup(b: &mut Bencher) {
10551030
let permutation = generate_permutation();
1056-
let directory: RamDirectory = RamDirectory::create();
1057-
{
1058-
let write: WritePtr = directory.open_write(Path::new("test")).unwrap();
1059-
let mut serializer = CompositeFastFieldSerializer::from_write(write).unwrap();
1060-
let mut fast_field_writers = FastFieldsWriter::from_schema(&SCHEMA);
1061-
for &x in &permutation {
1062-
fast_field_writers.add_document(&doc!(*FIELD=>x));
1031+
let n = permutation.len();
1032+
let column = DynamicFastFieldReader::from(permutation);
1033+
b.iter(|| {
1034+
let mut a = 0u64;
1035+
for i in (0..n / 7).map(|val| val * 7) {
1036+
a += column.get_val(i as u64);
10631037
}
1064-
fast_field_writers
1065-
.serialize(&mut serializer, &HashMap::new(), None)
1066-
.unwrap();
1067-
serializer.close().unwrap();
1068-
}
1069-
let file = directory.open_read(&path).unwrap();
1070-
{
1071-
let fast_fields_composite = CompositeFile::open(&file).unwrap();
1072-
let data = fast_fields_composite.open_read(*FIELD).unwrap();
1073-
let fast_field_reader = DynamicFastFieldReader::<u64>::open(data).unwrap();
1074-
1075-
b.iter(|| {
1076-
let mut a = 0u32;
1077-
for i in 0u64..permutation.len() as u64 {
1078-
a = fast_field_reader.get_val(i) as u32;
1079-
}
1080-
a
1081-
});
1082-
}
1038+
a
1039+
});
10831040
}
10841041

10851042
#[bench]
1086-
fn bench_intfastfield_fflookup_gcd(b: &mut Bencher) {
1087-
let path = Path::new("test");
1043+
fn bench_intfastfield_scan_all_fflookup(b: &mut Bencher) {
1044+
let permutation = generate_permutation();
1045+
let n = permutation.len();
1046+
let column = DynamicFastFieldReader::from(permutation);
1047+
b.iter(|| {
1048+
let mut a = 0u64;
1049+
for i in 0u64..n as u64 {
1050+
a += column.get_val(i);
1051+
}
1052+
a
1053+
});
1054+
}
1055+
1056+
#[bench]
1057+
fn bench_intfastfield_scan_all_fflookup_gcd(b: &mut Bencher) {
10881058
let permutation = generate_permutation_gcd();
1089-
let directory: RamDirectory = RamDirectory::create();
1090-
{
1091-
let write: WritePtr = directory.open_write(Path::new("test")).unwrap();
1092-
let mut serializer = CompositeFastFieldSerializer::from_write(write).unwrap();
1093-
let mut fast_field_writers = FastFieldsWriter::from_schema(&SCHEMA);
1094-
for &x in &permutation {
1095-
fast_field_writers.add_document(&doc!(*FIELD=>x));
1059+
let n = permutation.len();
1060+
let column = DynamicFastFieldReader::from(permutation);
1061+
b.iter(|| {
1062+
let mut a = 0u64;
1063+
for i in 0..n as u64 {
1064+
a += column.get_val(i);
10961065
}
1097-
fast_field_writers
1098-
.serialize(&mut serializer, &HashMap::new(), None)
1099-
.unwrap();
1100-
serializer.close().unwrap();
1101-
}
1102-
let file = directory.open_read(&path).unwrap();
1103-
{
1104-
let fast_fields_composite = CompositeFile::open(&file).unwrap();
1105-
let data = fast_fields_composite.open_read(*FIELD).unwrap();
1106-
let fast_field_reader = DynamicFastFieldReader::<u64>::open(data).unwrap();
1107-
1108-
b.iter(|| {
1109-
let mut a = 0u32;
1110-
for i in 0u32..permutation.len() as u32 {
1111-
a = fast_field_reader.get_val(i as u64) as u32;
1112-
}
1113-
a
1114-
});
1115-
}
1066+
a
1067+
});
1068+
}
1069+
1070+
#[bench]
1071+
fn bench_intfastfield_scan_all_vec(b: &mut Bencher) {
1072+
let permutation = generate_permutation();
1073+
b.iter(|| {
1074+
let mut a = 0u64;
1075+
for i in 0..permutation.len() {
1076+
a += permutation[i as usize] as u64;
1077+
}
1078+
a
1079+
});
11161080
}
11171081
}

0 commit comments

Comments
 (0)