switch和if,盡可能使用switch

2021-10-06 00:21:50 字數 535 閱讀 1594

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

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

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

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

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

但是lookupswitch還是要比if快很多

盡可能使用 const

使用 const 的好處在於它允許指定一種語意上的約束 某種物件不能被修改 編譯器具體來實施這種約束。通過 const,你可以通知編譯器和其他程式設計師某個值要保持不變。只要是這種情況,你就要明確地使用 const 因為這樣做就可以借助編譯器的幫助確保這種約束不被破壞。對指標來說,可以指定指標本身為...

盡可能使用const

const定義語義約束 制定乙個不被改動的物件,編譯器會強制實施這項約束。只要某值保持不變時事實,就應該確實說出來,這樣編譯器可以確保這項約束不違反。const多才多藝 可以用在classes外部修飾global或namespace作用域中的常量,或修飾檔案 函式 或區塊作用於中被宣告為static...

盡可能使用const

一 中心思想 1 將某些東西宣告為const可幫助編譯器偵測出錯誤用法。const可被施加於任何作用域內的物件 函式引數 函式返回型別 函式返回型別 成員函式本體 2 編譯器強制實施bitwise constness,但你編寫程式時應該使用 概念上的常量性 3 當const和non const成員函...