1

執行此操作的最快方法是什麼?左側parens中的變量返回布爾值,它們表示窗口大小範圍。 (例如o1281返回true爲屏幕1281和向上,o1025返回true爲1025和向上等)最快的方法來執行此操作?三元運算符?開關?陣列?

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'。例如,它們可能是圖像網址,數字越大表示分辨率越高的圖像。 'omarkup'是默認的。 – ryanve

回答

2

好的,你現在正在做的是尋找第一個真正的o值按降序排列,一旦你找到一個你正在尋找的第一個真值r-value,這個o-value的值是<=。沒有找到,你想返回值omarkup

因爲你只有幾個鄰值和r值,你的代碼,如「有趣」,因爲它可能是,似乎使測試可能數量最少。

我看不出開關或哈希值會有所幫助,因爲你會出現在第一個truthy值遞減順序進行搜索....因爲這一點,我不明白爲什麼分裂將有助於性能無論是。保持原樣,或者,如果您更喜歡可讀性(儘可能多的程序員),請創建1281,1025等爲字段的對象。

而且,擔心性能通常的東西時,面臨着將執行很多次的操作人做。這是這種情況嗎?這看起來像你只會執行一次,假設o和r值不會改變。 (只是一個供參考。)

附錄

基礎上添加註釋對上述問題,那樣子你會喜歡執行多次的操作。在這種情況下,儘管現代編譯器相當不錯,但在JavaScript級別進行自我優化可能沒問題。從代碼審查的角度來看,最大的擔憂是值1281,1025,961,941等是手動佈局的,並且是源代碼的一部分,因此維護(例如在此添加新的大小值)好,棘手和容易出錯。也就是說,根據你所展示的內容,我認爲可以肯定地說你寫的JavaScript是最好的,因爲它是一個天真的編譯器。你總是可以爲一個實現定義這些值的實現,然後對其進行配置以查看它是否「足夠快」。例如,可以如

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

和循環通過定義一個數組,但是,存在開銷這樣的實施方式。

一個問題,可以幫助你在這裏是要仔細考慮什麼可以和什麼不能被緩存。這可能有助於加速此代碼的未來執行。

+0

THX它需要在DOM準備和'.resize'函數內發生(所以它會隨時出現在瀏覽器窗口大小或當智能手機旋轉。)查看完整的東西在這裏:HTTP:// responsejs。com/source/v0/ – ryanve

+0

我意識到我可以將三角形的最後兩行簡單地合併爲'r0 || omarkup; // 0-319「,因爲那時我們知道我們低於320,並且我們知道這是在那裏工作的唯一兩個值。 – ryanve

+1

@ryanve我明白了。是的,在調整大小和迴流期間效率很重要。我在我的回答中添加了評論。 –