switch和if else的比較


if-else
只是單純地一個接一個比較;if...else每個條件都計算一遍;

switch
使用了Binary Tree算法;絕大部分情況下switch會快一點,除非是if-else的第一個條件就為true編譯器編譯switch與編譯if...else...不同。不管有多少case,都直接跳轉,不需逐個比較查詢;switch只計算一次值,然后都是test , jmp,

有很多else if的時候,用switch case比較清晰。switch使用查找表的方式決定了case的條件必須是一個連續的常量。而if-else則可以靈活的多。對於switch語句來說,起實際是使用一個跳轉表實現分支結構,不需要一次進行比較每一個所需要的條件。進行比較的次數為1.但是對於if…else語句來說:最少的比較次數為1,跟switch相比,在時間方面,switch語句的執行速度比if else要快,但是在程序執行占用的空間方面,switch語句需要一張跳轉表來維護。這個跳轉,表的本質是一個擁有標號的數組,需要額外的存儲空間,if else語句的空間效率更好一點。switch是一個很典型的空間換時間的例子。但是switch只能判斷是一個指定值的數據,而不能對一個區間中的數據進行判斷。這時候選擇if…else語句是一個很好的選擇。


switch case與if else的效率問題

switch case與if else的區別:switch case會生成一個跳轉表來指示實際的case分支的地址,而if...else卻需要遍歷條件分支直到命中條件。


switch case的優缺點

(1)switch case的優點:

當分支較多時,用switch的效率是很高的。因為switch是確定了選擇值之后直接跳轉到那個特定的分支.

(2)switch case的缺點:

1.switch...case占用較多的代碼空間,因為它要生成跳表,特別是當case常量分布范圍很大但實際有效值又比較少的情況,switch...case的空間利用率將變得很低。

2.switch...case只能處理case為常量的情況。


if else的優缺點

(1)if else的優點:if else能應用於更多的場所以if else比較靈活。

(2)if else的缺點:if else必須遍歷所以的可能值。

總結:
在選擇分支較多時,選用switch…case結構會提高程序的效率,但switch不足的地方在於只能處理字符或者數字類型的變量,if…else結構更
加靈活一些,if…else結構可以用於判斷表達式是否成立,比如if(a+b>c),if…else的應用范圍更廣,switch…case結構在某些情況下可以替代if…else結構。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM