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成員函...