switch和if,儘可能使用switch

switch 的判斷條件是 5 個時,性能比 if 高出了約 2.3 倍,而當判斷條件的數量越多時,他們的性能相差就越大

 

如果爲1 2 3 4 5 6 7 8這種緊湊行case條件時,底部使用tableswitch

如果爲3 6 8 9 22 34 這種非緊湊型case條件是,底部使用 lookupSwitch

tableswitch VS lookupSwitch

當執行一次 tableswitch 時,堆棧頂部的 int 值直接用作表中的索引,以便抓取跳轉目標並立即執行跳轉。也就是說 tableswitch 的存儲結構類似於數組,是直接用索引獲取元素的,所以整個查詢的時間複雜度是 O(1),這也意味着它的搜索速度非常快。

而執行 lookupswitch 時,會逐個進行分支比較或者使用二分法進行查詢,因此查詢時間複雜度是 O(log n),所以使用 lookupswitch 會比 tableswitch 慢

但是lookupswitch 還是要比if快很多

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章