if else和switch case那個效率更高一點
阿新 • • 發佈:2019-02-01
href n) 時間 無法 選擇 例如 bool 占用 空間換時間
switch...case寫法:
switch (表達式){ case 值1 : 語句1 break; case 值2 : 語句2 break; ... default : 語句n break; }
if...else寫法:
if(boolean){ }else if(boolean){ }else if(boolean){ }else{ }
由此看來,switch有點以空間換時間的意思,而事實上也的確如此。
1.當分支較多時,當時用switch的效率是很高的。因為switch是隨機訪問的,就是確定了選擇值之後直接跳轉到那個特定的分支,但是if。。else是遍歷所以得可能值,知道找到符合條件的分支。如此看來,switch的效率確實比ifelse要高的多。
2.由匯編代碼可知道,switch...case占用較多的代碼空間,因為它要生成跳表,特別是當case常量分布範圍很大但實際有效值又比較少的情況,switch...case的空間利用率將變得很低。
3.switch...case只能處理case為常量的情況,對非常量的情況是無能為力的。例如 if (a > 1 && a < 100),是無法使用switch...case來處理的。所以,switch只能是在常量選擇分支時比ifelse效率高,但是ifelse能應用於更多的場合,ifelse比較靈活。
if else和switch case那個效率更高一點