Skip to content

Commit

Permalink
bench doesn't need stats and doesn't care about packing either
Browse files Browse the repository at this point in the history
  • Loading branch information
teh-cmc committed Apr 12, 2023
1 parent 08a5837 commit ae9627d
Showing 1 changed file with 33 additions and 55 deletions.
88 changes: 33 additions & 55 deletions crates/re_arrow_store/benches/data_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use arrow2::array::UnionArray;
use criterion::{criterion_group, criterion_main, Criterion};

use re_arrow_store::{
DataStore, DataStoreConfig, DataStoreStats, GarbageCollectionTarget, LatestAtQuery, RangeQuery,
TimeInt, TimeRange,
DataStore, DataStoreConfig, GarbageCollectionTarget, LatestAtQuery, RangeQuery, TimeInt,
TimeRange,
};
use re_log_types::{
component_types::{InstanceKey, Rect2D},
Expand Down Expand Up @@ -262,66 +262,44 @@ fn range(c: &mut Criterion) {
}

fn gc(c: &mut Criterion) {
for &packed in packed() {
let mut group = c.benchmark_group(format!(
"datastore/num_rows={NUM_ROWS}/num_instances={NUM_INSTANCES}/packed={packed}/gc"
));
group.throughput(criterion::Throughput::Elements(
(NUM_INSTANCES * NUM_ROWS) as _,
));

let mut table = build_table(NUM_INSTANCES as usize, packed);
table.compute_all_size_bytes();

let bench = |store: &mut DataStore| {
let stats = DataStoreStats::from_store(store);
let mut group = c.benchmark_group(format!(
"datastore/num_rows={NUM_ROWS}/num_instances={NUM_INSTANCES}/gc"
));
group.throughput(criterion::Throughput::Elements(
(NUM_INSTANCES * NUM_ROWS) as _,
));

let mut table = build_table(NUM_INSTANCES as usize, false);
table.compute_all_size_bytes();

// Default config
group.bench_function("default", |b| {
let store = insert_table(Default::default(), InstanceKey::name(), &table);
b.iter(|| {
let mut store = store.clone();
let (_, stats_diff) = store.gc(GarbageCollectionTarget::DropAtLeastFraction(1.0 / 3.0));

// NOTE: only temporal data and row metadata get purged!
let num_bytes_dropped =
(stats_diff.temporal.num_bytes + stats_diff.metadata_registry.num_bytes) as f64;
let num_bytes_dropped_expected_min =
(stats.temporal.num_bytes + stats.metadata_registry.num_bytes) as f64 * 0.95 / 3.0;
let num_bytes_dropped_expected_max =
(stats.temporal.num_bytes + stats.metadata_registry.num_bytes) as f64 * 1.05 / 3.0;
assert!(
num_bytes_dropped_expected_min <= num_bytes_dropped
&& num_bytes_dropped <= num_bytes_dropped_expected_max,
"{} <= {} <= {}",
re_format::format_bytes(num_bytes_dropped_expected_min),
re_format::format_bytes(num_bytes_dropped),
re_format::format_bytes(num_bytes_dropped_expected_max),
);

stats_diff
};
});
});

// Default config
group.bench_function("default", |b| {
let store = insert_table(Default::default(), InstanceKey::name(), &table);
// Emulate more or less bucket
for &num_rows_per_bucket in num_rows_per_bucket() {
group.bench_function(format!("bucketsz={num_rows_per_bucket}"), |b| {
let store = insert_table(
DataStoreConfig {
indexed_bucket_num_rows: num_rows_per_bucket,
..Default::default()
},
InstanceKey::name(),
&table,
);
b.iter(|| {
let mut store = store.clone();
bench(&mut store)
let (_, stats_diff) =
store.gc(GarbageCollectionTarget::DropAtLeastFraction(1.0 / 3.0));
stats_diff
});
});

// Emulate more or less bucket
for &num_rows_per_bucket in num_rows_per_bucket() {
group.bench_function(format!("bucketsz={num_rows_per_bucket}"), |b| {
let store = insert_table(
DataStoreConfig {
indexed_bucket_num_rows: num_rows_per_bucket,
..Default::default()
},
InstanceKey::name(),
&table,
);
b.iter(|| {
let mut store = store.clone();
bench(&mut store)
});
});
}
}
}

Expand Down

1 comment on commit ae9627d

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rust Benchmark

Benchmark suite Current: ae9627d Previous: f7cdc66 Ratio
datastore/num_rows=1000/num_instances=1000/packed=false/insert/default 2846167 ns/iter (± 36668) 12647423 ns/iter (± 771443) 0.23
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at/default 371 ns/iter (± 7) 1832 ns/iter (± 20) 0.20
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/primary/default 265 ns/iter (± 0) 287 ns/iter (± 0) 0.92
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/secondaries/default 423 ns/iter (± 0) 437 ns/iter (± 0) 0.97
datastore/num_rows=1000/num_instances=1000/packed=false/range/default 3031049 ns/iter (± 53175) 12619455 ns/iter (± 957541) 0.24
datastore/num_rows=1000/num_instances=1000/gc/default 2418452 ns/iter (± 3005)
mono_points_arrow/generate_message_bundles 27648942 ns/iter (± 571962) 49349168 ns/iter (± 956671) 0.56
mono_points_arrow/generate_messages 113756125 ns/iter (± 861561) 170422381 ns/iter (± 1445254) 0.67
mono_points_arrow/encode_log_msg 144148280 ns/iter (± 2205817) 197428348 ns/iter (± 1536666) 0.73
mono_points_arrow/encode_total 283522112 ns/iter (± 1591615) 418867271 ns/iter (± 2157925) 0.68
mono_points_arrow/decode_log_msg 180570294 ns/iter (± 770646) 250596891 ns/iter (± 1424614) 0.72
mono_points_arrow/decode_message_bundles 61358087 ns/iter (± 420599) 85571845 ns/iter (± 1184302) 0.72
mono_points_arrow/decode_total 239637046 ns/iter (± 1145804) 342919689 ns/iter (± 2500778) 0.70
mono_points_arrow_batched/generate_message_bundles 22264309 ns/iter (± 686451) 43919041 ns/iter (± 1367501) 0.51
mono_points_arrow_batched/generate_messages 4564415 ns/iter (± 154371) 9270537 ns/iter (± 989843) 0.49
mono_points_arrow_batched/encode_log_msg 1390032 ns/iter (± 2595) 1476663 ns/iter (± 7486) 0.94
mono_points_arrow_batched/encode_total 27916183 ns/iter (± 890964) 54538211 ns/iter (± 1869911) 0.51
mono_points_arrow_batched/decode_log_msg 787939 ns/iter (± 1198) 855861 ns/iter (± 3205) 0.92
mono_points_arrow_batched/decode_message_bundles 7728519 ns/iter (± 267999) 13096938 ns/iter (± 880697) 0.59
mono_points_arrow_batched/decode_total 8470594 ns/iter (± 172699) 14899865 ns/iter (± 1022613) 0.57
batch_points_arrow/generate_message_bundles 238808 ns/iter (± 361) 333770 ns/iter (± 574) 0.72
batch_points_arrow/generate_messages 5056 ns/iter (± 11) 6465 ns/iter (± 17) 0.78
batch_points_arrow/encode_log_msg 258922 ns/iter (± 1010) 398721 ns/iter (± 1813) 0.65
batch_points_arrow/encode_total 533308 ns/iter (± 2280) 762505 ns/iter (± 3700) 0.70
batch_points_arrow/decode_log_msg 210863 ns/iter (± 503) 351797 ns/iter (± 1023) 0.60
batch_points_arrow/decode_message_bundles 1874 ns/iter (± 13) 2327 ns/iter (± 7) 0.81
batch_points_arrow/decode_total 220576 ns/iter (± 629) 360113 ns/iter (± 1637) 0.61
arrow_mono_points/insert 2275445834 ns/iter (± 4116300) 7424209949 ns/iter (± 17492043) 0.31
arrow_mono_points/query 1595223 ns/iter (± 16935) 1808539 ns/iter (± 17588) 0.88
arrow_batch_points/insert 1151518 ns/iter (± 5499) 3188138 ns/iter (± 24782) 0.36
arrow_batch_points/query 16963 ns/iter (± 52) 16354 ns/iter (± 25) 1.04
arrow_batch_vecs/insert 26434 ns/iter (± 86) 44563 ns/iter (± 71) 0.59
arrow_batch_vecs/query 388514 ns/iter (± 781) 389254 ns/iter (± 4163) 1.00
tuid/Tuid::random 34 ns/iter (± 0) 34 ns/iter (± 0) 1

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.