Skip to content

Commit

Permalink
arrow2 estimated_bytes_size benchmarks (#1743)
Browse files Browse the repository at this point in the history
* arrow2 estimated_bytes_size benchmarks

* cleanup
  • Loading branch information
teh-cmc authored Apr 3, 2023
1 parent 4439309 commit 29a13ea
Showing 1 changed file with 170 additions and 56 deletions.
226 changes: 170 additions & 56 deletions crates/re_arrow_store/benches/arrow2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,22 @@ static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;

use std::sync::Arc;

use arrow2::array::{Array, PrimitiveArray, StructArray};
use arrow2::{
array::{Array, PrimitiveArray, StructArray, UnionArray},
compute::aggregate::estimated_bytes_size,
};
use criterion::{criterion_group, criterion_main, Criterion};
use itertools::Itertools;
use re_log_types::{
component_types::{InstanceKey, Point2D},
datagen::{build_some_instances, build_some_point2d},
DataCell,
component_types::{InstanceKey, Point2D, Rect2D},
datagen::{build_some_instances, build_some_point2d, build_some_rects},
external::arrow2_convert::serialize::TryIntoArrow,
DataCell, SerializableComponent,
};

// ---

criterion_group!(benches, estimated_size_bytes);
criterion_group!(benches, erased_clone, estimated_size_bytes);
criterion_main!(benches);

// ---
Expand All @@ -41,19 +45,138 @@ enum ArrayKind {

/// E.g. an array of `Point2D`.
Struct,

/// E.g. an array of `Rect2D`.
StructLarge,
}

impl std::fmt::Display for ArrayKind {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
ArrayKind::Primitive => "primitive",
ArrayKind::Struct => "struct",
ArrayKind::StructLarge => "struct_large",
})
}
}

fn erased_clone(c: &mut Criterion) {
let kind = [
ArrayKind::Primitive,
ArrayKind::Struct,
ArrayKind::StructLarge,
];

for kind in kind {
let mut group = c.benchmark_group(format!(
"arrow2/size_bytes/{kind}/rows={NUM_ROWS}/instances={NUM_INSTANCES}"
));
group.throughput(criterion::Throughput::Elements(NUM_ROWS as _));

match kind {
ArrayKind::Primitive => {
let data = build_some_instances(NUM_INSTANCES);
bench_arrow(&mut group, data.as_slice());
bench_native(&mut group, data.as_slice());
}
ArrayKind::Struct => {
let data = build_some_point2d(NUM_INSTANCES);
bench_arrow(&mut group, data.as_slice());
bench_native(&mut group, data.as_slice());
}
ArrayKind::StructLarge => {
let data = build_some_rects(NUM_INSTANCES);
bench_arrow(&mut group, data.as_slice());
bench_native(&mut group, data.as_slice());
}
}
}

// TODO(cmc): Use cells once `cell.size_bytes()` has landed (#1727)
fn bench_arrow<T: SerializableComponent>(
group: &mut criterion::BenchmarkGroup<'_, criterion::measurement::WallTime>,
data: &[T],
) {
let arrays: Vec<Box<dyn Array>> = (0..NUM_ROWS)
.map(|_| TryIntoArrow::try_into_arrow(data).unwrap())
.collect_vec();

let total_size_bytes = arrays
.iter()
.map(|array| estimated_bytes_size(&**array) as u64)
.sum::<u64>();
assert!(total_size_bytes as usize >= NUM_ROWS * NUM_INSTANCES * std::mem::size_of::<T>());

group.bench_function("array", |b| {
b.iter(|| {
let sz = arrays
.iter()
.map(|array| estimated_bytes_size(&**array) as u64)
.sum::<u64>();
assert_eq!(total_size_bytes, sz);
sz
});
});
}

fn bench_native<T: Clone>(
group: &mut criterion::BenchmarkGroup<'_, criterion::measurement::WallTime>,
data: &[T],
) {
let vecs = (0..NUM_ROWS).map(|_| data.to_vec()).collect_vec();

let total_size_bytes = vecs
.iter()
.map(|vec| std::mem::size_of_val(vec.as_slice()) as u64)
.sum::<u64>();
assert!(total_size_bytes as usize >= NUM_ROWS * NUM_INSTANCES * std::mem::size_of::<T>());

{
let vecs = (0..NUM_ROWS).map(|_| data.to_vec()).collect_vec();
group.bench_function("vec", |b| {
b.iter(|| {
let sz = vecs
.iter()
.map(|vec| std::mem::size_of_val(vec.as_slice()) as u64)
.sum::<u64>();
assert_eq!(total_size_bytes, sz);
sz
});
});
}

trait SizeOf {
fn size_of(&self) -> usize;
}

impl<T> SizeOf for Vec<T> {
fn size_of(&self) -> usize {
std::mem::size_of_val(self.as_slice())
}
}

{
let vecs: Vec<Box<dyn SizeOf>> = (0..NUM_ROWS)
.map(|_| Box::new(data.to_vec()) as Box<dyn SizeOf>)
.collect_vec();

group.bench_function("vec/erased", |b| {
b.iter(|| {
let sz = vecs.iter().map(|vec| vec.size_of() as u64).sum::<u64>();
assert_eq!(total_size_bytes, sz);
sz
});
});
}
}
}

fn estimated_size_bytes(c: &mut Criterion) {
let kind = [ArrayKind::Primitive, ArrayKind::Struct];
let kind = [
ArrayKind::Primitive,
ArrayKind::Struct,
ArrayKind::StructLarge,
];

for kind in kind {
let mut group = c.benchmark_group(format!(
Expand All @@ -69,6 +192,9 @@ fn estimated_size_bytes(c: &mut Criterion) {
ArrayKind::Struct => (0..NUM_ROWS)
.map(|_| DataCell::from_native(build_some_point2d(NUM_INSTANCES).as_slice()))
.collect(),
ArrayKind::StructLarge => (0..NUM_ROWS)
.map(|_| DataCell::from_native(build_some_rects(NUM_INSTANCES).as_slice()))
.collect(),
}
}

Expand Down Expand Up @@ -127,59 +253,40 @@ fn estimated_size_bytes(c: &mut Criterion) {

match kind {
ArrayKind::Primitive => {
let cells = generate_cells(kind);
let arrays = cells
.iter()
.map(|cell| {
cell.as_arrow_ref()
.as_any()
.downcast_ref::<PrimitiveArray<u64>>()
.unwrap()
.clone()
})
.collect_vec();
let total_instances =
arrays.iter().map(|array| array.len() as u32).sum::<u32>();
assert_eq!(total_instances, (NUM_ROWS * NUM_INSTANCES) as u32);

group.bench_function("array/downcast_first", |b| {
b.iter(|| {
let arrays = arrays.clone();
assert_eq!(
total_instances,
arrays.iter().map(|array| array.len() as u32).sum::<u32>()
);
arrays
});
});
bench_downcast_first::<PrimitiveArray<u64>>(&mut group, kind);
}
ArrayKind::Struct => {
let cells = generate_cells(kind);
let arrays = cells
.iter()
.map(|cell| {
cell.as_arrow_ref()
.as_any()
.downcast_ref::<StructArray>()
.unwrap()
.clone()
})
.collect_vec();
let total_instances =
arrays.iter().map(|array| array.len() as u32).sum::<u32>();
assert_eq!(total_instances, (NUM_ROWS * NUM_INSTANCES) as u32);
ArrayKind::Struct => bench_downcast_first::<StructArray>(&mut group, kind),
ArrayKind::StructLarge => bench_downcast_first::<UnionArray>(&mut group, kind),
}

group.bench_function("array/downcast_first", |b| {
b.iter(|| {
let arrays = arrays.clone();
assert_eq!(
total_instances,
arrays.iter().map(|array| array.len() as u32).sum::<u32>()
);
arrays
});
fn bench_downcast_first<T: arrow2::array::Array + Clone>(
group: &mut criterion::BenchmarkGroup<'_, criterion::measurement::WallTime>,
kind: ArrayKind,
) {
let cells = generate_cells(kind);
let arrays = cells
.iter()
.map(|cell| {
cell.as_arrow_ref()
.as_any()
.downcast_ref::<T>()
.unwrap()
.clone()
})
.collect_vec();
let total_instances = arrays.iter().map(|array| array.len() as u32).sum::<u32>();
assert_eq!(total_instances, (NUM_ROWS * NUM_INSTANCES) as u32);

group.bench_function("array/downcast_first", |b| {
b.iter(|| {
let arrays = arrays.clone();
assert_eq!(
total_instances,
arrays.iter().map(|array| array.len() as u32).sum::<u32>()
);
arrays
});
}
});
}
}

Expand All @@ -196,9 +303,16 @@ fn estimated_size_bytes(c: &mut Criterion) {
.collect()
}

fn generate_rects() -> Vec<Vec<Rect2D>> {
(0..NUM_ROWS)
.map(|_| build_some_rects(NUM_INSTANCES))
.collect()
}

match kind {
ArrayKind::Primitive => bench_std(&mut group, generate_keys()),
ArrayKind::Struct => bench_std(&mut group, generate_points()),
ArrayKind::StructLarge => bench_std(&mut group, generate_rects()),
}

fn bench_std<T: Clone>(
Expand Down

1 comment on commit 29a13ea

@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: 29a13ea Previous: 4439309 Ratio
arrow2/size_bytes/primitive/rows=10000/instances=100/array 148300 ns/iter (± 743)
arrow2/size_bytes/primitive/rows=10000/instances=100/vec 3288 ns/iter (± 21)
arrow2/size_bytes/primitive/rows=10000/instances=100/vec/erased 17720 ns/iter (± 99)
arrow2/size_bytes/struct/rows=10000/instances=100/array 501737 ns/iter (± 4053)
arrow2/size_bytes/struct/rows=10000/instances=100/vec 3272 ns/iter (± 30)
arrow2/size_bytes/struct/rows=10000/instances=100/vec/erased 17571 ns/iter (± 149)
arrow2/size_bytes/struct_large/rows=10000/instances=100/array 3611445 ns/iter (± 295981)
arrow2/size_bytes/struct_large/rows=10000/instances=100/vec 3934 ns/iter (± 40)
arrow2/size_bytes/struct_large/rows=10000/instances=100/vec/erased 17612 ns/iter (± 210)
arrow2/erased_clone/primitive/rows=10000/instances=100/cell/arc_erased 770047 ns/iter (± 4046) 792883 ns/iter (± 3300) 0.97
arrow2/erased_clone/primitive/rows=10000/instances=100/cell/wrapped_in_arc 189442 ns/iter (± 1755) 195551 ns/iter (± 1101) 0.97
arrow2/erased_clone/primitive/rows=10000/instances=100/array 741950 ns/iter (± 3757) 744484 ns/iter (± 3015) 1.00
arrow2/erased_clone/primitive/rows=10000/instances=100/array/downcast_first 357577 ns/iter (± 3832) 337065 ns/iter (± 1490) 1.06
arrow2/erased_clone/primitive/rows=10000/instances=100/vec/full_copy 1020624 ns/iter (± 14264) 1060389 ns/iter (± 24228) 0.96
arrow2/erased_clone/primitive/rows=10000/instances=100/vec/wrapped_in_arc 127077 ns/iter (± 870) 126945 ns/iter (± 1086) 1.00
arrow2/erased_clone/struct/rows=10000/instances=100/cell/arc_erased 4214637 ns/iter (± 105458) 4128504 ns/iter (± 72718) 1.02
arrow2/erased_clone/struct/rows=10000/instances=100/cell/wrapped_in_arc 279796 ns/iter (± 2056) 287732 ns/iter (± 9008) 0.97
arrow2/erased_clone/struct/rows=10000/instances=100/array 4120116 ns/iter (± 61539) 4087103 ns/iter (± 114046) 1.01
arrow2/erased_clone/struct/rows=10000/instances=100/array/downcast_first 3550125 ns/iter (± 36481) 3521132 ns/iter (± 80613) 1.01
arrow2/erased_clone/struct/rows=10000/instances=100/vec/full_copy 1283442 ns/iter (± 24136) 1309466 ns/iter (± 73698) 0.98
arrow2/erased_clone/struct/rows=10000/instances=100/vec/wrapped_in_arc 126538 ns/iter (± 1372) 127911 ns/iter (± 472) 0.99
arrow2/erased_clone/struct_large/rows=10000/instances=100/cell/arc_erased 53470183 ns/iter (± 925361)
arrow2/erased_clone/struct_large/rows=10000/instances=100/cell/wrapped_in_arc 168703 ns/iter (± 1263)
arrow2/erased_clone/struct_large/rows=10000/instances=100/array 52087011 ns/iter (± 883710)
arrow2/erased_clone/struct_large/rows=10000/instances=100/array/downcast_first 50096180 ns/iter (± 847690)
arrow2/erased_clone/struct_large/rows=10000/instances=100/vec/full_copy 5413612 ns/iter (± 312427)
arrow2/erased_clone/struct_large/rows=10000/instances=100/vec/wrapped_in_arc 126747 ns/iter (± 824)
arrow2_convert/serialize/primitive/instances=100000/arrow2_convert 415436 ns/iter (± 4284) 414957 ns/iter (± 2032) 1.00
arrow2_convert/serialize/primitive/instances=100000/arrow2/from_values 19542 ns/iter (± 384) 19325 ns/iter (± 145) 1.01
arrow2_convert/serialize/primitive/instances=100000/arrow2/from_vec 19669 ns/iter (± 207) 19278 ns/iter (± 78) 1.02
arrow2_convert/deserialize/primitive/instances=100000/arrow2_convert 96288 ns/iter (± 508) 95846 ns/iter (± 473) 1.00
arrow2_convert/deserialize/primitive/instances=100000/arrow2/validity_checks 160674 ns/iter (± 1112) 162386 ns/iter (± 660) 0.99
arrow2_convert/deserialize/primitive/instances=100000/arrow2/validity_bypass 58643 ns/iter (± 241) 58734 ns/iter (± 271) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/insert/default 10638674 ns/iter (± 721417) 11161687 ns/iter (± 808377) 0.95
datastore/num_rows=1000/num_instances=1000/packed=false/insert/bucketsz=0 12800212 ns/iter (± 452803) 13982746 ns/iter (± 1355930) 0.92
datastore/num_rows=1000/num_instances=1000/packed=false/insert/bucketsz=2 12123770 ns/iter (± 638739) 12836073 ns/iter (± 738438) 0.94
datastore/num_rows=1000/num_instances=1000/packed=false/insert/bucketsz=32 10600992 ns/iter (± 454300) 11152267 ns/iter (± 647703) 0.95
datastore/num_rows=1000/num_instances=1000/packed=false/insert/bucketsz=2048 10847035 ns/iter (± 710500) 11538810 ns/iter (± 736849) 0.94
datastore/num_rows=1000/num_instances=1000/packed=true/insert/default 10224985 ns/iter (± 403984) 11012616 ns/iter (± 722890) 0.93
datastore/num_rows=1000/num_instances=1000/packed=true/insert/bucketsz=0 11999563 ns/iter (± 580359) 13065177 ns/iter (± 733248) 0.92
datastore/num_rows=1000/num_instances=1000/packed=true/insert/bucketsz=2 11807113 ns/iter (± 596072) 13066434 ns/iter (± 1063777) 0.90
datastore/num_rows=1000/num_instances=1000/packed=true/insert/bucketsz=32 10482180 ns/iter (± 413209) 10584163 ns/iter (± 541261) 0.99
datastore/num_rows=1000/num_instances=1000/packed=true/insert/bucketsz=2048 10184170 ns/iter (± 455895) 10533402 ns/iter (± 604679) 0.97
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at/default 1828 ns/iter (± 22) 1820 ns/iter (± 24) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at/bucketsz=0 1834 ns/iter (± 12) 1843 ns/iter (± 8) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at/bucketsz=2 1846 ns/iter (± 12) 1811 ns/iter (± 10) 1.02
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at/bucketsz=32 1818 ns/iter (± 8) 1827 ns/iter (± 7) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at/bucketsz=2048 1833 ns/iter (± 6) 1792 ns/iter (± 8) 1.02
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at/default 1821 ns/iter (± 21) 1846 ns/iter (± 21) 0.99
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at/bucketsz=0 1843 ns/iter (± 15) 1850 ns/iter (± 11) 1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at/bucketsz=2 1824 ns/iter (± 17) 1844 ns/iter (± 9) 0.99
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at/bucketsz=32 1847 ns/iter (± 5) 1821 ns/iter (± 12) 1.01
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at/bucketsz=2048 1838 ns/iter (± 20) 1797 ns/iter (± 14) 1.02
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/primary/default 280 ns/iter (± 1) 281 ns/iter (± 0) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/secondaries/default 437 ns/iter (± 1) 432 ns/iter (± 2) 1.01
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/primary/bucketsz=0 279 ns/iter (± 1) 280 ns/iter (± 2) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/secondaries/bucketsz=0 443 ns/iter (± 1) 442 ns/iter (± 3) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/primary/bucketsz=2 280 ns/iter (± 0) 281 ns/iter (± 1) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/secondaries/bucketsz=2 444 ns/iter (± 1) 440 ns/iter (± 4) 1.01
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/primary/bucketsz=32 281 ns/iter (± 0) 282 ns/iter (± 1) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/secondaries/bucketsz=32 439 ns/iter (± 3) 437 ns/iter (± 3) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/primary/bucketsz=2048 279 ns/iter (± 0) 280 ns/iter (± 2) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/secondaries/bucketsz=2048 435 ns/iter (± 2) 434 ns/iter (± 3) 1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/primary/default 279 ns/iter (± 0) 280 ns/iter (± 1) 1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/secondaries/default 434 ns/iter (± 1) 432 ns/iter (± 3) 1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/primary/bucketsz=0 279 ns/iter (± 0) 280 ns/iter (± 1) 1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/secondaries/bucketsz=0 447 ns/iter (± 3) 447 ns/iter (± 3) 1
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/primary/bucketsz=2 278 ns/iter (± 1) 279 ns/iter (± 1) 1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/secondaries/bucketsz=2 449 ns/iter (± 0) 441 ns/iter (± 4) 1.02
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/primary/bucketsz=32 279 ns/iter (± 0) 280 ns/iter (± 1) 1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/secondaries/bucketsz=32 439 ns/iter (± 0) 438 ns/iter (± 2) 1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/primary/bucketsz=2048 280 ns/iter (± 1) 280 ns/iter (± 1) 1
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/secondaries/bucketsz=2048 434 ns/iter (± 1) 433 ns/iter (± 2) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/range/default 12174288 ns/iter (± 597918) 12092008 ns/iter (± 1378356) 1.01
datastore/num_rows=1000/num_instances=1000/packed=false/range/bucketsz=0 2181647 ns/iter (± 27486) 2185176 ns/iter (± 12987) 1.00
datastore/num_rows=1000/num_instances=1000/packed=false/range/bucketsz=2 2186675 ns/iter (± 14860) 2145937 ns/iter (± 16948) 1.02
datastore/num_rows=1000/num_instances=1000/packed=false/range/bucketsz=32 1936760 ns/iter (± 12398) 1914930 ns/iter (± 14605) 1.01
datastore/num_rows=1000/num_instances=1000/packed=false/range/bucketsz=2048 1840328 ns/iter (± 16573) 1891364 ns/iter (± 9292) 0.97
datastore/num_rows=1000/num_instances=1000/packed=true/range/default 11722311 ns/iter (± 742657) 11699048 ns/iter (± 1295636) 1.00
datastore/num_rows=1000/num_instances=1000/packed=true/range/bucketsz=0 2130938 ns/iter (± 71721) 2121284 ns/iter (± 12561) 1.00
datastore/num_rows=1000/num_instances=1000/packed=true/range/bucketsz=2 2154847 ns/iter (± 17490) 2147167 ns/iter (± 26080) 1.00
datastore/num_rows=1000/num_instances=1000/packed=true/range/bucketsz=32 1884472 ns/iter (± 28531) 1818079 ns/iter (± 8675) 1.04
datastore/num_rows=1000/num_instances=1000/packed=true/range/bucketsz=2048 1830844 ns/iter (± 28354) 1868010 ns/iter (± 13486) 0.98
vector_ops/sort/instances=10000/smallvec/n=4 12359 ns/iter (± 25) 12467 ns/iter (± 96) 0.99
vector_ops/sort/instances=10000/tinyvec/n=4 9661 ns/iter (± 49) 9605 ns/iter (± 90) 1.01
vector_ops/sort/instances=10000/vec 9626 ns/iter (± 33) 9651 ns/iter (± 56) 1.00
vector_ops/split_off/instances=10000/smallvec/n=4/manual 5561 ns/iter (± 19) 5534 ns/iter (± 55) 1.00
vector_ops/split_off/instances=10000/tinyvec/n=4 2740 ns/iter (± 27) 2717 ns/iter (± 26) 1.01
vector_ops/split_off/instances=10000/tinyvec/n=4/manual 2749 ns/iter (± 21) 2730 ns/iter (± 24) 1.01
vector_ops/split_off/instances=10000/vec 2731 ns/iter (± 21) 2682 ns/iter (± 34) 1.02
vector_ops/split_off/instances=10000/vec/manual 2735 ns/iter (± 17) 2732 ns/iter (± 30) 1.00
vector_ops/swap/instances=10000/smallvec/n=4 32763 ns/iter (± 60) 32750 ns/iter (± 140) 1.00
vector_ops/swap/instances=10000/tinyvec/n=4 18283 ns/iter (± 22) 18281 ns/iter (± 71) 1.00
vector_ops/swap/instances=10000/vec 12319 ns/iter (± 47) 12305 ns/iter (± 59) 1.00
vector_ops/swap_opt/instances=10000/smallvec/n=4 42705 ns/iter (± 90) 42542 ns/iter (± 382) 1.00
vector_ops/swap_opt/instances=10000/tinyvec/n=4 28791 ns/iter (± 66) 28640 ns/iter (± 462) 1.01
vector_ops/swap_opt/instances=10000/vec 19818 ns/iter (± 25) 20314 ns/iter (± 282) 0.98
mono_points_arrow/generate_message_bundles 46316431 ns/iter (± 644918) 44869872 ns/iter (± 972879) 1.03
mono_points_arrow/generate_messages 183382126 ns/iter (± 1497890) 184987567 ns/iter (± 1464519) 0.99
mono_points_arrow/encode_log_msg 224379598 ns/iter (± 1031199) 223991908 ns/iter (± 1330124) 1.00
mono_points_arrow/encode_total 452302399 ns/iter (± 1815719) 448811001 ns/iter (± 2384762) 1.01
mono_points_arrow/decode_log_msg 270391565 ns/iter (± 1237132) 271668701 ns/iter (± 1519588) 1.00
mono_points_arrow/decode_message_bundles 99694109 ns/iter (± 1125172) 100478281 ns/iter (± 892467) 0.99
mono_points_arrow/decode_total 368423831 ns/iter (± 2140655) 369691354 ns/iter (± 2129615) 1.00
mono_points_arrow_batched/generate_message_bundles 36718603 ns/iter (± 1354639) 36660650 ns/iter (± 2154571) 1.00
mono_points_arrow_batched/generate_messages 11364244 ns/iter (± 674006) 10977137 ns/iter (± 761934) 1.04
mono_points_arrow_batched/encode_log_msg 1802197 ns/iter (± 4059) 1778654 ns/iter (± 10425) 1.01
mono_points_arrow_batched/encode_total 51982074 ns/iter (± 4524698) 47846507 ns/iter (± 2979493) 1.09
mono_points_arrow_batched/decode_log_msg 991987 ns/iter (± 4324) 980621 ns/iter (± 5678) 1.01
mono_points_arrow_batched/decode_message_bundles 20640513 ns/iter (± 1463771) 18792164 ns/iter (± 1417274) 1.10
mono_points_arrow_batched/decode_total 21075346 ns/iter (± 1540303) 22647725 ns/iter (± 798461) 0.93
batch_points_arrow/generate_message_bundles 284473 ns/iter (± 1995) 283591 ns/iter (± 1724) 1.00
batch_points_arrow/generate_messages 7639 ns/iter (± 13) 7512 ns/iter (± 61) 1.02
batch_points_arrow/encode_log_msg 394503 ns/iter (± 3369) 381746 ns/iter (± 2024) 1.03
batch_points_arrow/encode_total 695338 ns/iter (± 4884) 688171 ns/iter (± 4121) 1.01
batch_points_arrow/decode_log_msg 337876 ns/iter (± 1156) 336292 ns/iter (± 1557) 1.00
batch_points_arrow/decode_message_bundles 2912 ns/iter (± 13) 2888 ns/iter (± 26) 1.01
batch_points_arrow/decode_total 347168 ns/iter (± 3149) 346236 ns/iter (± 1269) 1.00
arrow_mono_points/insert 6958829824 ns/iter (± 13837782) 6931655699 ns/iter (± 23946641) 1.00
arrow_mono_points/query 1812590 ns/iter (± 20101) 1852088 ns/iter (± 21189) 0.98
arrow_batch_points/insert 2970081 ns/iter (± 36870) 3091514 ns/iter (± 22467) 0.96
arrow_batch_points/query 16453 ns/iter (± 50) 16434 ns/iter (± 88) 1.00
arrow_batch_vecs/insert 42748 ns/iter (± 203) 42875 ns/iter (± 247) 1.00
arrow_batch_vecs/query 506242 ns/iter (± 2723) 506132 ns/iter (± 3722) 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.