hhhizzz commented on PR #10443:
URL: https://github.com/apache/arrow-rs/pull/10443#issuecomment-5092591209

   > Thanks. I reran the comparison three times on Apple M4; the results are 
attached. `run64` remained between approximately -0.6% and +2.5%. `run01` 
showed a larger regression in one run, but it was not reproduced in the other 
two. Since the cold path still uses the same `mask_to_selectors` 
implementation, the variation may be related to system noise, CPU frequency 
changes, or compiler code-layout differences.
   
   Thanks for checking this on Mac. I profiled the regression on an AMD EPYC 
9254 (Zen 4) and reran every input as a separately compiled single-case 
benchmark.
   
   With three alternating rounds:
   
   - `mask_iterate_then_consume`: all 9 cases improved by 49%–86%.
   - Cold `mask_consume`: no repeatable regression; run32/64/96/128 improved by 
2%–7%, while the others were effectively unchanged.
   
   The original run128 regression appears to be an x86_64 code-layout/alignment 
artifact. `mask_to_selectors` has identical machine code and retired 
instruction counts, but its address relative to a 32-byte boundary changes when 
the benchmark case list changes. Changing the layout also flips the performance 
result.
   
   So I don’t think the previously reported cold-path regression is caused by 
this PR or should block it. The cold microbenchmark is simply quite sensitive 
to binary layout on this Zen 4 machine.
   
   


-- 
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