2011-12-04 37 views
0

我不確定它是否可能,但有沒有更簡潔(或更快的方法)來執行以下操作?更簡單的方法來檢查值並分配在TRUE上

if(w > width) width = w; 

我的工作,做類似的邏輯每秒數千次一個項目,但它往往更復雜,所以我想1),使其速度更快,如果可能和2)找到爲了我自己的理智,寫一個更簡短的方法。

**編輯**

的東西多一點的時間爲例

if(Math.abs(x) > this._boundingBox.width) this._boundingBox.width = Math.abs(x); 

回答

2

這將至少縮短鍵入:

width = Math.max(w, width) 
+0

使用Math.max是每個jsperf處理最慢的:http://jsperf.com/is-gt儘管我會堅持if/else,但我最喜歡你的創新。 – Jacksonkr

0

您可以使用三元運算:

width = (w > width ? w : width); 

然而,這可能是因爲它效率會低一點當條件爲假時將分配width = width

雖然,我仍然建議你堅持原始代碼。沒有理由混淆你的邏輯。

+0

這有不同的結果。我想你的意思是'寬=寬>寬? w:width;'。然而,這種解決方案並不比OP的當前狀態短。 –

+1

@羅勃瓦 - 對不起,那是一個錯字。你說的沒錯,不是很短*,但是我不能計算我看過這樣一個問題的次數,其中接受的答案不是*實際上比所問的問題短,僅僅因爲它們碰巧更喜歡替代語法。 – Polynomial

0

我不知道這是多快,但它似乎更簡潔。

(w > width) ? width = w : w = w ; 
/* The w = w does nothing though a statement is needed */ 

我還假設你使用c或C++,因爲你需要速度。

0

試試這個(未測試):

w>width&&width=w; 

和其他捷徑,這裏有一個快速參考: http://geogeeks.net/2011/01/javascript-shorthands/

+0

**錯誤**:'無效的賦值左邊'。您必須在表達式的最後部分添加括號。令人驚訝的是,代碼沒有縮短...... –

相關問題