neilconway opened a new pull request, #11376:
URL: https://github.com/apache/arrow-rs/pull/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.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to