if vs switch,測試與分析

2021-09-22 12:05:31 字數 753 閱讀 5295

記得在很久以前,上乙個哥們抱怨.net的原始碼寫的太爛,到處都是switch,我當時就做過乙個測試,證實了switch比if效能高許多。今天又看見這個話題,呵呵,那就再做個測試吧。

**:release下編譯,測試結果:

testifelse: 613

testswitch: 165

4倍左右的效能差距。反編譯看il,會發現testswitch方法中多了這麼一句:

switch (l_0032, l_0038, l_003e, l_0044, l_004a)

這句話實現了乙個 jump table。

正如一線工作者

所言,這個switch 指令是乙個有索引的跳轉,而if ... else 是無索引的跳轉。if...else 是 o(n)級別的,switch ... case 是 o(1)級別的。

如果將上面測試**的分支增加到10支,測試testswitch(10)與testifelse(10)的效能,會發現前者比後者幾乎快7-8倍。

詳細解釋請參見《深入理解計算機系統》一書中的某章(忘了哪個章節,書不在身邊,裡面講了switch和if的區別)。也可參考這篇文章:下的分析見:

如果switch(string ..),測試了一下,switch與if...else效能相當。我原以為為是無法生成跳轉表,剛看完這篇文章,發現還是可以生成跳轉表,只是這個跳轉表的代價比簡單的整數型別的跳轉表代價高。也就是說,這種情況下,switch case 還是o(1)級別分支語句的。

xiaotie 集異璧實驗室(geblab)

效能測試指標 效能測試需求分析與指標分析

一般而言,被測物件的效能要求,會在使用者需求規格說明書中給出,如單位時間內的訪問量需達到多少,業務響應時間不超過多少,業務成功率不低於多少,硬體資源耗用要在乙個合理的範圍中,效能指標以量化形式給出。對於相對規範的產品,產品團隊一般會給出類似的要求 壓測後,滿足相關指標,則測試通過,若不滿足,則需要分...

測試評審與風險分析

在正式的會議 上將軟體專案的成果 包括各階段的文件 產生的 等 提交給使用者 客戶或有關部門人員對軟體產品進行評審和批准。其目的是找出可能影響軟體產品質量 開發過程 維護工作的適用性和環境方面的設計缺陷,並採取補救措施,以及找出在效能 安全性和經濟方面的可能的改進。在軟體開發與測試的各個階段進行相應...

效能測試2 需求分析與測試設計

目錄 效能測試的需求分析與測試設計 1.業務建模的基本概念 1.1什麼是業務建模?1.2 業務建模考慮因素 1.3 業務建模的成果物 2.效能指標確認 2.1效能指標的 2.2常用效能指標舉例 2.3效能指標的計算 3.測試場景設計 3.1 目的 3.2 測試場景包含的內容 3.3 測試場景設計原則...