Is there a reason to use
Hold* attributes for functional code (e.g. no intention to mutate input)? I'd expect performance gains as in pass by value vs pass by reference.
data = RandomReal[1, 10^8]; data // Function[x, x[]] // RepeatedTiming
data // Function[x, x[], HoldAllComplete] // RepeatedTiming
The question is, why doesn't it matter? Or are there cases where it matters, performance tuning wise.