MATLAB:If语句顺序是否会影响性能

时间:2013-06-13 01:31:30

标签: performance matlab if-statement for-loop

我正在尝试加速一个运行大约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

非常感谢任何帮助

1 个答案:

答案 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)