Hi,
Given the following immutable type,
immutable Point
x::Float64
y::Float64
end
the first code sinks allocations of values of that type,
f() = Point(2.0, 3.0)
let
x = Array(Point, 1000000)
@time for i = 1:length(x)
x[i] = f()
end
end
## elapsed time: 0.004287101 seconds (0 bytes allocated)
while the second code does not sink allocations:
let
g() = Point(2.0, 3.0)
let
x = Array(Point, 1000000)
@time for i = 1:length(x)
x[i] = g()
end
end
end
## elapsed time: 0.074520601 seconds (40181616 bytes allocated, 12.42% gc
time)
Why do the calls to the local function allocate temporaries?
Peter