1

我知道,當源代碼被編譯時,編譯器將if/elseif/elseswitch語句至少不同使得開關語句一樣高效作爲對應的if/elseis/else和通常更高效。這通常是通過在編譯時創建一個在運行時使用的跳轉表來完成的。但是,對於解釋型語言(未編譯),使用switch語句時是否會有顯着的效率提升?當然,口譯員不能預先建立跳轉表來提高語句的效率。如果在解釋語言/ ELSE和Switch效率比較

做比較,一組對應的if/elseif/else語句解釋處理中增加一個switch語句的效率的方式switch語句?

回答

1

我的猜測是,在解釋型語言中,使用switch語句的效率好處確實比編譯語言小;我能想到的唯一實際好處是,在switch語句中,操作數(與不同'案例'相比較的操作數)只會被評估一次,並會立即保存在一個寄存器中,這不會改變並且只與不同的'案例'進行比較,而如果語句可能錯過該位並重新評估(即使成本僅從內存中讀取)每個if子句的操作數。

另外,您還應該考慮可讀性。在大多數情況下,這種性能差異是微不足道的,您應該選擇使代碼更具可讀性和可理解性的選項。