Please see https://github.com/JuliaLang/julia/issues/249 and https://github.com/JuliaLang/julia/issues/3424.
On Monday, March 10, 2014 12:24:20 PM UTC, Carlos Becker wrote: > > Hello, I recently found out this: > > julia> b = rand((1024,1024)) > > julia> sizeof(b) > 8388608 > > julia> @time b += 2; > elapsed time: 0.007002567 seconds (8388704 bytes allocated) > > > which, with further investigation, I could verify that it is allocating a > new array every time I do something like b += 2, > instead of modifying the original object b points to. > > Is this an intended behavior, or better, is there a command to optimize > such operations? > I tried @devec but it also seems to generate a new destination array. I > could also write my own function, > but I suppose there are better ways to deal with this. > > Code such as b ./= 2 is very common, and this introduces array > duplication, increasing memory usage as well as > additional unneeded operations (the former crashed my machine a few hours > ago). > > Thanks. >
