1

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

任何帮助都感激不尽

4

1 回答 1

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)

于 2013-06-13T01:48:18.527 回答