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 72887ed91c chore: reduce `row_selection_cursor` benchmark runtime 
(#11498)
72887ed91c is described below

commit 72887ed91c80002bb7ec755ce1e964bab07bebea
Author: Huaijin <[email protected]>
AuthorDate: Tue Oct 13 04:37:47 2026 +0000

    chore: reduce `row_selection_cursor` benchmark runtime (#11498)
    
    # Which issue does this PR close?
    
    
    - follow up #11389
    
    # Rationale for this change
    
    <!--
    Why are you proposing this change? If this is already explained clearly
    in the
    issue then this section is not needed. Explaining clearly why changes
    are proposed
    helps reviewers understand your changes and offer better suggestions for
    fixes.
    
    Please try to explain the problem you are trying to solve in terms of
    the user-visible
    behavior, rather than the implementation.
    -->
    
    The `row_selection_cursor` benchmark matrix contains 1,140 cases, making
    a full run expensive. Reduce the parameter combinations while retaining
    all four selection distributions, both input backings, and all three
    execution policies.
    
    
    # What changes are included in this PR?
    
    <!--
    There is no need to duplicate the description in the issue here but it
    is
    sometimes worth providing a summary of the individual changes in this
    PR.
    -->
    
    Reduce the matrix from 1,140 to 288 cases:
    
    - Keep average selector lengths `[4, 28, 32, 40]`, covering fragmented
    selections and values around the default Auto threshold of 32.
    - Keep column counts `[2, 8, 32]`.
    - Keep Utf8View lengths `[8, 16, 256]`, covering inline, short
    non-inline, and longer strings.
    - Remove `dtype/int32`, which duplicates the baseline Int32 input.
    
    Set the warmup time to 2 seconds and the sample size to 50. Retain the
    default 5-second measurement target.
    
    # Are these changes tested?
    
    <!--
    We typically require tests for all PRs in order to:
    1. Prevent the code from being accidentally broken by subsequent changes
    2. Serve as another way to document the expected behavior of the code
    
    If tests are not included in your PR, please explain why (for example,
    are they
    covered by existing tests, if so identify these tests)?
    
    If this PR claims a performance improvement, please include evidence
    such as
    benchmark results.
    
    DO NOT simply paste a list of commands ran to verify the code; this is
    what our
    CI is for and it pollutes the PR. ONLY explain if testing was included
    with this
    PR, or why it wasn't.
    -->
    
    # Are there any significant user-facing changes?
    
    <!--
    Significant user-facing changes include:
    - Breaking public API change
    - Significant change to existing functionality (e.g. function returns
    something different)
    
    These need to be explicitly called out to ensure we have proper
    documentation if
    required and to ensure we follow proper semantic versioning.
    
    DO NOT restate the changes of this PR; if a bug was fixed and already
    explained
    above, we don't need this to be restated as a user-facing change.
    -->
---
 parquet/benches/row_selection_cursor.rs | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/parquet/benches/row_selection_cursor.rs 
b/parquet/benches/row_selection_cursor.rs
index 7926e0b301..84343ac7d7 100644
--- a/parquet/benches/row_selection_cursor.rs
+++ b/parquet/benches/row_selection_cursor.rs
@@ -34,9 +34,14 @@ use rand::{RngExt, SeedableRng};
 const TOTAL_ROWS: usize = 1 << 20;
 const BATCH_SIZE: usize = 1 << 10;
 const BASE_SEED: u64 = 0xA55AA55A;
-const AVG_SELECTOR_LENGTHS: &[usize] = &[4, 8, 12, 16, 20, 24, 28, 32, 36, 40];
-const COLUMN_WIDTHS: &[usize] = &[2, 4, 8, 16, 32];
-const UTF8VIEW_LENS: &[usize] = &[4, 8, 16, 32, 64, 128, 256];
+// 4 exercises fragmented selections; 28, 32, and 40 cover average run lengths
+// below, at, and above the default Auto threshold of 32.
+const AVG_SELECTOR_LENGTHS: &[usize] = &[4, 28, 32, 40];
+// 2, 8, and 32 exercise narrow, medium, and wide projections.
+const COLUMN_WIDTHS: &[usize] = &[2, 8, 32];
+// 8 exercises inline Utf8View values, 16 crosses the 12-byte inline limit,
+// and 256 exercises longer strings.
+const UTF8VIEW_LENS: &[usize] = &[8, 16, 256];
 const BENCH_MODES: &[BenchMode] = &[BenchMode::Selector, BenchMode::Mask, 
BenchMode::Auto];
 const BACKINGS: &[Backing] = &[Backing::Selectors, Backing::Mask];
 
@@ -46,10 +51,6 @@ struct DataProfile {
 }
 
 const DATA_PROFILES: &[DataProfile] = &[
-    DataProfile {
-        name: "int32",
-        build_batch: build_int32_batch,
-    },
     DataProfile {
         name: "float64",
         build_batch: build_float64_batch,
@@ -253,7 +254,13 @@ fn bench_over_lengths(
     }
 }
 
-criterion_group!(benches, criterion_benchmark);
+criterion_group! {
+    name = benches;
+    config = Criterion::default()
+        .warm_up_time(std::time::Duration::from_secs(2))
+        .sample_size(50);
+    targets = criterion_benchmark
+}
 criterion_main!(benches);
 
 struct BenchInput {

Reply via email to