我知道在编译源代码时,编译器会对if
/ elseif
/ else
和switch
语句进行不同的处理,使得switch语句的效率至少与对应的相同if
/ elseis
/ else
,通常效率更高。这通常通过在运行时使用的编译时构建跳转表来完成。但是,对于解释型语言(未编译),使用switch
语句时是否会显着提高效率?当然,解释器无法预先构建跳转表来提高switch
语句的效率。
与相应的switch
/ switch
/ if
语句相比,解释器是否能够提高elseif
语句的效率来处理else
语句?
答案 0 :(得分:1)
我的猜测是,在解释型语言中,使用switch语句的效率优势确实小于编译语言;我能想到的唯一实际好处是,在switch语句中,操作数(与不同的'case'进行比较的操作数)将只被评估一次并将立即保存在寄存器中,这不会改变并且只与不同的“案例”进行比较,而if语句可能会错过该位并重新评估(即使成本只是从内存中读取)每个if子句的操作数。
此外,您还应该考虑可读性。在大多数情况下,这种性能差异可以忽略不计,您应该选择使您的代码更易读和易懂的选项。