1

これを実行する最も速い方法は何ですか?左側の括弧内の変数はブール値を返し、ウィンドウサイズの範囲を表します。 (例えばo1281戻り画面1281とアップのためtrueo1025戻る1025ためtrueとアップ、等)これを実行する最速の方法は?三元演算子?スイッチ?アレイ?

markup = // ternary triangle (the rows set the markup priority at each band) 
    (o1281) ? r1281 || r1025 || r961 || r641 || r481 || r320 || r0 || omarkup: 
     (o1025) ? r1025 || r961 || r641 || r481 || r320 || r0 || omarkup: 
      (o961) ? r961 || r641 || r481 || r320 || r0 || omarkup: 
       (o641) ? r641 || r481 || r320 || r0 || omarkup: 
        (o481) ? r481 || r320 || r0 || omarkup: 
         (o320) ? r320 || r0 || omarkup: 
          (o0) ? r0 || omarkup: 
           omarkup; 

私は多分考え中央(o641)条件に基づく2つの範囲にそれを破壊しました。

それは価値がありますか?

+2

これをどのように理解する必要がありますか? 'rxxx'とは何ですか? –

+0

r ###の値はすべて「var」です。例えば、それらは画像URLであり、より高い数字はより高い解像度の画像を表す。 'omarkup'がデフォルトです。 – ryanve

答えて

2

あなたがやっていることは、最初の真実の値が降順であることを探していて、一度見つけたら真の値が<=の最初の真理値を探しています。何も見つからない場合は、値omarkupを返します。

o値とr値がいくつかあるだけなので、あなたのコードは「面白い」と評価されるため、テストの数を最小限に抑えることができます。

最初の真理値の降順で検索しているように見えるので、スイッチやハッシュがどのように役立つか分かりません....このため、分割がパフォーマンスに役立つのはなぜですか。現状のままにしておくか、可読性が望ましい場合(多くのプログラマが行うように)、1281,1025などのオブジェクトをのフィールドにします。

また、多くの場合、何度も実行される操作に直面したときに、パフォーマンスに関する心配があります。これはここのケースですか?これは、oとrの値が変わらないと仮定して、一度だけ実行するようなものです。 (ちょうどFYI。)コメントに基づいて

は、上記の質問に追加

補遺は、それはあなたがを複数回実行したい操作のように見えます。この場合、JavaScriptレベルで自己最適化するのは大丈夫ですが、現代のコンパイラはかなり良いです。コードレビューの観点から最大の関心事は、値1281,1025,961,941などが手動でレイアウトされ、ソースコードの一部であるため、ここで新しいサイズ値を追加するなどのメンテナンスは、うまく、手の込んだでエラーが起こりやすい。それは、あなたが示したことに基づいて、書かれたJavaScriptがナイーブなコンパイラを使って得られる最良のものだと言うのは安全だと思います。これらの値を正確に1回定義したインプリメンテーションでは、いつでも撮影することができます。たとえば、

var sizes = [1281,1025,961,641,481,320,0] 

のような配列を定義できますが、そうした実装ではオーバーヘッドがあります。

ここで役立つ1つの問題は、キャッシングできるものとできないものを慎重に検討することです。これは、このコードの将来の実行をスピードアップするのに役立ちます。

+0

Thx DOMが準備が整っていて、 '.resize'関数の中で起きる必要があります(ブラウザーのウィンドウがリサイズされたり、スマートフォンが回転したときにいつでも起きるでしょう)。http:// responsejsを見てください。com/source/v0/ – ryanve

+0

私は三角形の最後の2行を 'r0 || omarkup; // 0-319'となっています。なぜなら、その時点で私たちは320を下回っていることを知っています。 – ryanve

+1

@ryanveわかりました。はい、サイズ変更とリフロー時に効率が重要です。私は私の答えにコメントを追加しました。 –