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]
