1

だから私はコードをできるだけ効率的にしようとしているjavascriptでコードを書いています。より効率的な私の質問:

1.

foreach MyObjects{
    if(MyObject.getBoolean() == false){
        MyObject.setBoolean(true);
    }
}

2.

foreach MyObjects{
    MyObject.setBoolean(true);
}

foreach が本物ではないことはわかっていますが、ステートメントを何千回も実行するときにどちらが優れているかを尋ねています。

4

2 に答える 2

2

「フィルタリング」要素があるため、最初のものは大丈夫かもしれないと考える理由がわかります。しかし、反復子は、値が存在するかどうかに関係なく、すべての値を反復処理する必要があるため、関数呼び出しが 1 つ少なくても、同じ結果falseになるように明示的に指示するだけです。true

だから後者。

編集

setBooleanケンが示唆するように、それは異なる方法と方法がどれだけ高価かによって異なりますgetBoolean。値setBooleanを に設定するだけでなく、最初のほうtrueが速い可能性があります。しかし、メソッド名が示唆する以外のことを行うとは想像しがたいです。

于 2013-07-30T16:21:11.030 に答える
1

私は間違っているかもしれませんが、2 番目のオプションの方が手順が少ないようです。

foreach MyObjects{
    MyObject.setBoolean(true);
}

最初のオプションでは、すべての値のブール値をチェックしてから、false の値を true に設定しています。(1回動作保証(get)、2回目(set)の可能性あり)。2 番目の方法でも、すべてのオブジェクトを検索しますが、チェックをスキップして単純に設定します (1 つの操作のみ)。したがって、おそらく実行時間に大きな違いはありませんが、2 番目の方が効率的です。

于 2013-07-30T16:24:14.937 に答える