0

私のプログラムのユーザーから可能な入力がいくつかあるとします。次のフレームワークは、(その後の各 If ステートメントの有効性をテストするのではなく) 必要な最も可能性の高い If ステートメントに最初にアクセスし、残りを無視することによって、処理時間を短縮しますか? 可能性が最も低い inputN はプロセッサにとって余分な負担になると思いますが、ユーザーがその入力を与える可能性が限られているため、この構造が全体的な処理時間を短縮する場合は価値があります。

If (input1) then (output1)
Else
    If (input2) then (output2)
    Else
        If (input3) then:(output3)
        Else
            If ...

            ... Else
                    OutputN

ありがとう!

4

2 に答える 2

1

これが if-else-if ステートメントの仕組みです。

if(booleanTest1)
{
   //do a thing
}
else if(booleanTest2)
{
   //do another thing
}
//...ad infinitum
else
{
   //do default behavior
}

booleanTest1 が true の場合、そのコードを実行し、他のすべてのテストをスキップします。

1 つの変数を多数の可能な値と比較する場合は、switchステートメントを使用します。

于 2013-07-29T19:24:11.543 に答える
0

確かなことはわかりませんが、分岐予測のために、実行時にスイッチケースの方が効率的であると思います。If-elses を使用すると、分岐が多くなり、うまくいかない可能性があります。これは、プロセッサ que でパイプされたコマンドには適していません。本当にたくさんの可能性があるなら。

私は通常、<キー、呼び出すメソッド> のマップ/ディクショナリでイストを行います。それらが同じ署名を持っている限り、これは機能する可能性があります。switch-case ほど高速ではないかもしれませんが、新しい入力に反応する必要がある場合に、ある程度の柔軟性が得られます。

例: Dictionary myDic = new Dictionary(); myDic.Add(input1,() => input1 が来たらどうするか);

呼び出しは次のようになります。

于 2013-07-29T19:27:55.030 に答える