[問題] 多邏輯判斷的if合併或拆開對效能有影響嗎?

看板Programming作者 (兔子)時間13年前 (2011/05/25 06:36), 編輯推噓2(2012)
留言14則, 7人參與, 最新討論串1/3 (看更多)
例如說 if(邏輯1 && 邏輯2 && 邏輯3 && 邏輯4){ //要做的事 } 和這樣 if(邏輯1){ if(邏輯2){ if(邏輯3){ if(邏輯4){ //要做的事 } } } } 有哪個明顯的比較好嗎? 謝謝 -- ◤ __ \__◢◤◢◤ ψhirabbitt ◤ ◢███◣ ◢███◣ 我不是m █████ █████ 我不是s ██ ███ 是溫柔 ██╱╲ ◥█████◣● 是傲嬌╱╱ ◥████ ˇ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.172.229

05/25 07:49, , 1F
看語言和compiler,有些&&出現false
05/25 07:49, 1F

05/25 07:49, , 2F
後面的就不做了
05/25 07:49, 2F

05/25 11:04, , 3F
也就是說有些合著也和分開寫一樣嘍0.0
05/25 11:04, 3F

05/25 12:19, , 4F
沒特殊理由的話,我會用第一種
05/25 12:19, 4F

05/25 16:59, , 5F
有時候要判斷陣列的內容 要先看有無超界
05/25 16:59, 5F

05/25 16:59, , 6F
就只能用第二種
05/25 16:59, 6F

05/25 19:03, , 7F
如果判斷式太長就用第二種
05/25 19:03, 7F

05/25 21:27, , 8F
五樓你的問題一樓有回答到了
05/25 21:27, 8F

05/25 21:27, , 9F
有些 && 和 || 是 short-circuit evaluation
05/25 21:27, 9F

05/25 21:28, , 10F
例如如果 && 前面是 false 後面就不做
05/25 21:28, 10F

05/25 21:28, , 11F
這種情形下你可以用第一種
05/25 21:28, 11F

05/26 13:54, , 12F
第二種和第一種的short-circuit等價吧?
05/26 13:54, 12F

05/27 12:41, , 13F
重點不是效能,而是第二種顯得複雜,易錯
05/27 12:41, 13F

05/28 09:29, , 14F
除非有常數,否則編譯後都是一樣的
05/28 09:29, 14F
文章代碼(AID): #1Dt3Bma4 (Programming)
討論串 (同標題文章)
文章代碼(AID): #1Dt3Bma4 (Programming)