如果/ if if語句中的每個塊返回,還是最好有一個ifs鏈?具體而言,這要是最快:在C中,這是更快:如果有回報,或者如果有回報?
答:
if (condition1) {
code1;
return a;
}
if (condition2) {
code2;
return b;
}
//etc...
B:
if (condition1) {
code1;
return a;
}
else if (condition2) {
code2;
return b;
}
//etc...
我會假設*前者更快,但可能會更好地使用第二個,因爲它更清楚地表明第二個if塊將不會被執行,除非第一個條件失敗。 – mpen 2009-07-24 02:44:32
不,C不會規定CPU級別發生了什麼。沒有JMP語句的CPU體系結構似乎是合理的,它使用一個標誌來執行語句,但會丟棄結果。這意味着速度是相同的。我的觀點是:你不能假設C代碼將會成爲封面。 – paxdiablo 2009-07-24 02:48:06
「架構...它使用一個標誌來執行語句,但放棄結果」。例如,ARM有條件指令,如果條件標誌被設置則執行條件指令,如果不是,則作爲nops。它們是由編譯器發出的,如果跳轉的速度比跳過的許多操作都要慢。 – 2009-07-24 02:54:05