Oh, right. I was thinking of
function naivesum(a)
s = zero(eltype(a))
@simd for x in a
s += x
end
return s
end
which is mostly left-to-right summation but is not strictly left-to-right at a fine-grained level because @simd
allows some reassociation. This achieves basically the same performance as sum
:
julia> @btime sum($a);
5.047 ms (0 allocations: 0 bytes)
julia> @btime naivesum($a);
5.166 ms (0 allocations: 0 bytes)