I am observing some behavior and I don’t understand it. I would appreciate any thoughts. For context, I’m using VSCode with the Julia extension, interactively evaluating each line of my code by highlighting it and pressing Shift+Enter.
This is the code.
A = rand(10)
B = rand(10)
C = rand(10)
D = zeros(Float64, 10)
function test_alloc(A, B, C, D)
for j = 1:length(A)
D[j] = B[j] * C[j]
end
sum!(A, D)
end
My expectation is that I will get zero heap allocations from this since no new arrays are created inside the function and no slices or views are made.
I check the allocation by doing a = @allocated test_alloc(A, B, C, D)
and it tells me 1123001 bytes(?) were allocated. I then evaluate the line a = @allocated test_alloc(A, B, C, D)
again, without changing anything, and it says 0 bytes. I’m wondering, why does it change when I evaluate it the second time?
I also note that when I do @btime test_alloc($A, $B, $C, $D)
the result is 0 allocations as I expect.