Performance of non-preallocated array
Afficher commentaires plus anciens
I'm trying to understand the reason these two options are so differnet in performance:
>> tic;z=[];for i = 1:1e5;z(end+1)=i;end;toc
Elapsed time is 0.022571 seconds.
>> tic;z=[];for i = 1:1e5;z = [z i];end;toc
Elapsed time is 7.752663 seconds.
In both we create an array of the numbers 1 to 100000 while increasing the size of the array (without pre-allocating the array) but in the second option, the concatenation is taking much more time than the isertion option, although in both cases we have to re-allocate the memory and copy the array to the new place in memory.
Thanks Noam
Réponse acceptée
Plus de réponses (1)
James Tursa
le 29 Avr 2015
1 vote
MATLAB's parser can sometimes pre-allocate an array behind the scenes for you (even though you didn't code it that way) if it recognizes a pattern in the for loop. It appears the parser recognizes the pattern in the first case but not the second case.
1 commentaire
Noam
le 29 Avr 2015
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!