"Bruno Luong" <firstname.lastname@example.org> wrote in message <email@example.com>... > > > A(:,1)=B*x; > > > > Is this equivalent to > > > > z=B*x; %memory allocated here > > A(:,1)=z; > > > > Or, does the output of B*x get directly generated in the memory locations occupied by A(:,1)? > > On recent MATLAB versions (2010a?), MATLAB is smart and puts directly the output in-place. ================
OK. That's strangely inconsistent with things I'm seeing, but so be it.
> If the resulting is not in a contiguous memory, similar optimization on memory space will slow down the speed. I suspect that is the main reason why the optimization cannot be carried out in the later example. ===============
Don't you mean, that optimization cannot be carried out in the *latter* example? I can see for example why
might have to extract B(1,idx) to a continguous memory block when C is a matrix. In that case the elements in B(1,idx) will be accessed many times.