我正在尝试加速一个运行大约100000次迭代的循环,并且想知道if语句的顺序是否会对性能产生影响。例如,以下代码会在每次执行for循环时在else中执行语句之前检查if和elseif吗?
for ii = 1:100000
if ii == 1
statements_1;
elseif ii >= 2 && ii <= 10
statements_2;
else
statements_3;
end
end
下面的代码会运行得更快吗?
for ii = 1:100000
if ii > 10
statements_3;
elseif ii >= 2 && ii <= 10
statements_2;
else
statements_1;
end
end
非常感谢任何帮助
答案 0 :(得分:4)
是的,它将检查第一个条件,然后如果它是假的,它将检查以下条件。
但是,为了提高性能,我建议您使用更多矢量化代码:
for i=find(condition1(1:10000))
statements1
end
for i=find(condition2(1:10000))
statements2
end
for i=find(condition3(1:10000))
statements3
end
例如condition2=@(i) (i>2 & i<10)