Why is loop time execution better than vectorized form in this case?
Show older comments
Hello everyone,
At first, I had the following code:
for ii = 1:numel(data.classes)
switch data.classes{ii}
case 1
data.classes{ii} = 'case 1';
% Active classes
case 2
data.classes{ii} = 'case2';
otherwise
disp('Invalid case.');
end
end
However, I know that vectorized code is preferred instead of loops, so I changed it to
case1Found = ismember(data.classes, case1Members);
case2Found = ismember(data.classes, case2Members);
data_.classes(case1Found) = {'case1'};
data_.classes(case2Found) = {'case2'};
When comparing their performance (execution time) I was surprised to see that the first option, with loops was twice as fast than the vectorized option (0.014688 s vs. 0.029204 s)!
Why is this? Thanks ;-) !
Accepted Answer
More Answers (1)
Daniel Shub
on 27 Jul 2011
1 vote
The gains in efficiency from vectorization are not always that substantial anymore (and can even be negative) since loops in MATLAB have become much faster over the years, thanks, I believe, to the JIT accelerator.
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!