1

次のアプローチのどれがより効率的で高速です

  1. 入れ子状態

    if( a == b ) {
    
      if( b1 == c ) {
    
        if( c1 == d ) {
        }
    
      }
    
    }
    
  2. 論理式

    if( a==b && b1 == c && c1 == d) {
    }
    

一般的に、上記のアプローチのどれがより速いですか、そしてなぜですか?ライブラリを作成するときにどちらを優先する必要がありますか?最初のアプローチでは、上位のifステートメントがtrueの場合にのみ、1つのブロックが実行されることを知っています。2番目のアプローチでは、条件評価が左から右であるため、前の条件が次の場合、次の条件もスキップします。 false ..私は正しいですか?

もしそうなら、2つのアプローチの間にパフォーマンスの違いはありますか?

4

1 に答える 1

5

&&ご想像のとおり、JavaScriptで||短絡し(falseで使用さb == cれている場合は実行されません)、JavaScriptは入力のために特別な配管を行う必要がないため、これらの間に大きなパフォーマンスの違いがあるとは思えません。ブロック(まだブロックスコープ変数がないため)。a == b&&

ただし、これらは実装ごとに異なります。実際に知る唯一の方法は、ターゲットエンジンでテストすることです。ブラウザをターゲットにしている場合は、 http://jsperf.comなどのサイトを使用します。


より重要な質問は次のとおりです。それは重要ですか?読みやすさ、保守性などとは対照的に、読みやすさ/保守性/明確さは、潜在的なパフォーマンスの節約を大幅に上回ると思います。

また、本当にこのようなことに興味がある場合は、とにかく高度なモードでクロージャーコンパイラのようなものを使用することをお勧めします。これにより、コードが実際に最適化されます(単なるミニファイアではありません)。

于 2012-04-30T16:38:34.497 に答える