38

さて、皆さんが私に飛びついて「パフォーマンスを気にしすぎだ」と言う前に、私がこれを熱心すぎる性質ではなくむしろ好奇心から尋ねていることをここに置いておきます. それは言った...

&& ("and") 演算子の使用とネストされた if ステートメントの使用にパフォーマンスの違いがあるかどうか興味があります。また、実際の処理の違いはありますか?つまり、 &&は常に両方のステートメントを処理しますか? それとも、最初のステートメントが失敗した場合に @ 最初のステートメントを停止しますか? それは、入れ子になった if ステートメントとどう違うのでしょうか?

明確にするための例:

A) && ("and") 演算子

if(a == b && c == d) { ...perform some code fashizzle... }

対 B) ネストされた if ステートメント

if(a == b) {
    if(c == d) { ...perform some code fashizzle... }
}
4

4 に答える 4

31

パフォーマンスの違いはごくわずかです。&&演算子は、左側の式が評価されるときに右側の式をチェックしませんfalse。ただし、オペレーターは関係なく両方&をチェックします。おそらく、この事実が原因で混乱が生じる可能性があります。

この特定の例では、 を使用するものを選択します&&。そのほうが読みやすいからです。

于 2010-06-27T02:49:41.447 に答える
14

パフォーマンスが気になる場合は、a==bが よりも失敗する可能性が高いことを確認してくださいc==d。そうすれば、ifステートメントは早期に失敗します。

于 2010-06-27T02:55:03.853 に答える
3

ネストされたifs のように、&&遅延します。
式は、が真である場合 a && bにのみ評価されます。ba

したがって、2 つのケースは、機能とパフォーマンスの両方で完全に同一である必要があります。

于 2010-06-27T02:48:40.343 に答える
3

パフォーマンス テストは問題を解決するのに役立つかもしれません: http://jsperf.com/simey-if-vs-if

この 2 つのパフォーマンスの違いは、ごくわずかです。ただし、@Gert が述べたように、早期に失敗すると本当に改善されます。

于 2015-05-11T12:57:01.183 に答える