У меня есть цикл for
в Matlab, и весь код внутри цикла for заключен в оператор if
. Например:
for p = 1:length(array)
if array(p) == 1 %// Test positive for condition
%// Generic code here that
%// Only executes if p == 1
end;
end;
Быстрее проверить тест на равенство с помощью инструкции if
и выполнить внутренний код, если это правда, или, чтобы проверить неравенство, а затем использовать оператор continue, например:
for p = 1:length(array)
if array(p) ~= 1 %// Test negative for condition
continue; %// Skip if negative
end;
%// Generic code here that
%// Only executes if p == 1
end;
Или, не имеет ли значения ни один из способов, то есть оптимизирован ли он на тот же результат при выполнении?
Поскольку его единственная микро-оптимизация - это не очень важно - но мне любопытно узнать!
РЕДАКТИРОВАТЬ: Интересно, что после профилирования кода, как рекомендовано, последний, по-видимому, будет намного быстрее - если кто-нибудь захочет объяснить, что это было бы здорово! (В конце концов, в лучшем случае это та же логика, но с дополнительными инструкциями, которые нужно выполнить)