This is an automated email from the ASF dual-hosted git repository.
github-merge-queue[bot] pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/main by this push:
new c07655f8e9 Benchmark Variant ObjectBuilder::insert with unique-field
validation (#11461)
c07655f8e9 is described below
commit c07655f8e986834f2aebf9de46ba1c02ac58d32a
Author: Artem Osipov <[email protected]>
AuthorDate: Fri Oct 9 15:07:23 2026 +0000
Benchmark Variant ObjectBuilder::insert with unique-field validation
(#11461)
Adds a focused Criterion benchmark for inserting 128 pre-generated
unique fields into a Variant object, in both validated and unvalidated
modes. This benchmark-only PR establishes a baseline for the behavior
change in #11403, as requested in review.
Validation: the benchmark compiled on current Apache main; both cases
ran in a short local smoke test. Independent read-only review found no
blocking issues.
---
parquet-variant/benches/variant_builder.rs | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/parquet-variant/benches/variant_builder.rs
b/parquet-variant/benches/variant_builder.rs
index 9dbf843586..9ce65b97cf 100644
--- a/parquet-variant/benches/variant_builder.rs
+++ b/parquet-variant/benches/variant_builder.rs
@@ -505,6 +505,33 @@ fn bench_extend_metadata_builder(c: &mut Criterion) {
});
}
+fn bench_object_insert_unique_fields(c: &mut Criterion) {
+ let keys: Vec<_> = (0..128).map(|index|
format!("field_{index}")).collect();
+ let mut group = c.benchmark_group("object_insert_unique_fields");
+ group.throughput(Throughput::Elements(keys.len() as u64));
+
+ for validate_unique_fields in [false, true] {
+ let name = if validate_unique_fields {
+ "validated"
+ } else {
+ "unvalidated"
+ };
+ group.bench_function(name, |b| {
+ b.iter(|| {
+ let mut builder =
+
VariantBuilder::new().with_validate_unique_fields(validate_unique_fields);
+ let mut object = builder.new_object();
+ for key in &keys {
+ object.insert(hint::black_box(key),
hint::black_box(42_i32));
+ }
+ object.finish();
+ hint::black_box(builder.finish());
+ });
+ });
+ }
+ group.finish();
+}
+
criterion_group!(
benches,
bench_object_field_names_reverse_order,
@@ -516,7 +543,8 @@ criterion_group!(
bench_object_list_partially_same_schema,
bench_validation_validated_vs_unvalidated,
bench_iteration_performance,
- bench_extend_metadata_builder
+ bench_extend_metadata_builder,
+ bench_object_insert_unique_fields
);
criterion_main!(benches);