Вопреки вашим убеждениям, это не проблема, компилятор (должен) автоматически выполнит эту оптимизацию за вас.См., Например, Цикл-инвариантный код движения .
Что вы можете сделать, чтобы помочь компилятору переместить вычисление чека наружу в виде флага, например
flag = a==2;
for i = 1:100
stuff(flag)
end
Тогда вам нужно будет выполнить вычисление только один раз, и это яснокомпилятору, что значение не меняется.
ПРИМЕЧАНИЕ. Очевидно, что если ваша проверка действительно a==2
, это не будет иметь большого значения.
РЕДАКТИРОВАТЬ: Я не смог точно убедиться, что MATLAB делает это автоматически.Тем не менее, это только первый уровень оптимизации, который сделан для вас.Все современные процессоры используют так называемый предсказатель ветвления, см., Например, этот блестящий ответ Почему обработка отсортированного массива быстрее, чем обработка несортированного массива? , или эта вики-страница .Короче говоря, процессор угадывает результат оператора if, если он правильный, все идет быстрее.Я думаю, будет справедливо сказать, что процессор угадывает правильно во всех ваших случаях.
TLDR: Не беспокойтесь об этом.