size() Vs. length() Vs. Stored Length in for Loop
This script compares using the functions size, length, and storing the value of an array before entering a for loop. This is important because of the time wasted calling size() or length() in a for loop versuses the clarity and quickness of coding by not storing the array size before the for loop.
By Jason Nicholson 2014-October-06 10:38:14 Version 1.0
MAX_ARRAY_LENGTH = 1e6; NUMBER_OF_ITERATIONS = 1e7; array = rand(1, int32(rand()*MAX_ARRAY_LENGTH));
arrayLength = size(array,2); tic; for i=1:NUMBER_OF_ITERATIONS arrayLength; end toc;
Elapsed time is 0.205824 seconds.
tic; for i=1:NUMBER_OF_ITERATIONS size(array,2); end toc
Elapsed time is 4.509939 seconds.
tic; for i=1:NUMBER_OF_ITERATIONS length(array); end toc;
Elapsed time is 3.459530 seconds.
Storing the value is about 17 times and 22 times faster than using length() and size() in a for loop respectively.
I tried several other arrangements of the code with the same results as shown here. Note, that if you run publish on this code, it is much slower than just running the code. I cannot explain this.