前言
之前學習Java時,遇到了個問題,有點糾結。當if與switch都實現相同的功能時,該改采用哪種方法實現?
我並不懂得如何准確測量兩者之間的性能區別,便在OlineJudge上找條該類型的題,來測試兩者的性能結果
好,廢話不多說,看圖
下面是運行結果,前者為if的,后者為switch的
switch的實現
if的實現
雖然兩者的結果相比,占用內存相同,運行時間相差較大,
但是OnlineJudge所用的數據是否相同、數據量多大及是否相同等等都不清楚。
之后翻查了一些其他資料,switch的執行速度並不是一直都超過if,當數據量達到萬級或者百萬級時,if的執行速度反而會比switch更快
但是試問一下,大多數方法的控制條件數量都不會超兩位數吧?
所以相比追求更快的運行速度,還不如選擇合適的方法實現該功能。
if在某些情景更適合表達邏輯,而switch也有它的優勢。就我知道而言,switch的控制表達式會依次與case后的值匹配。遇到相對應的值時,執行對應的執行體,沒有break時繼續往下執行。
所以我們可以根據case標簽的執行頻率排列case標簽的順序進一步提高速度