This is an automated email from the ASF dual-hosted git repository.

github-merge-queue[bot] pushed a commit to branch 
gh-readonly-queue/main/pr-11376-c7f60c612bd16ca5485cc9acddfd216c10ea9765
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git

commit 36a71842b85f7d09e09a49cb7715ab73dcaa2f6d
Author: Neil Conway <[email protected]>
AuthorDate: Wed Oct 7 19:07:13 2026 +0000

    perf(parquet): Skip per-level validity pass for list children with no nulls 
(#11376)
    
    # Which issue does this PR close?
    
    - N/A
    
    # Rationale for this change
    
    Since #9848, reading the child column of a list builds a compact
    validity bitmap with a pass over every definition level. When every
    definition level in a chunk has the maximum value (i.e., there are no
    null lists, empty lists, or null elements in any list), we can skip
    doing the pass over the definition levels and append an all-valid run
    instead.
    
    Adding this pass caused a regression in list decoding performance
    between 58.3.0 and 59.1.0: for example, 232 ms -> 289 ms to read 5M rows
    with 62.5M values on an Apple M4 Max.
    
    Benchmark for this case was added in #11375. Results on M4 Max:
    
    - StringList/no NULLs: +0.7%, −0.6%, +0.9%
    - StringList/half NULLs: +2.8%, +3.8%, +1.0%
    - StringList/90pct NULLs: +2.7%, +0.5%, +0.9%
    - StringList/99pct NULLs: +1.0%, +0.2%, +0.7%
    - Int32List/no NULLs: +0.8%, −0.3%, −0.2%
    - Int32List/half NULLs: +1.3%, −0.3%, +0.5%
    - Int32List/90pct NULLs: +0.6%, −0.9%, −0.3%
    - Int32List/99pct NULLs: +1.1%, −0.6%, +1.0%
    - Int32List/no NULLs or empty lists: −18.4%, −19.9%, −18.5%
    - Fixed32List/no NULLs: +1.2%, −0.8%, +1.1%
    - Fixed32List/half NULLs: +1.6%, +0.8%, +2.1%
    - Fixed32List/90pct NULLs: +0.4%, −0.5%, −0.5%
    - Fixed32List/99pct NULLs: +0.2%, +0.4%, +0.9%
    
    # What changes are included in this PR?
    
    See above.
    
    # Are these changes tested?
    
    Covered by existing tests.
    
    # Are there any significant user-facing changes?
    
    No.
    
    # AI usage
    
    Developed and revised with Claude Code (Opus 5.5).

Reply via email to