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 に答える