如果/ Else和Switch效率在解释语言中进行比较

时间:2013-03-15 22:04:29

标签: performance if-statement switch-statement interpreted-language

我知道在编译源代码时,编译器会对if / elseif / elseswitch语句进行不同的处理,使得switch语句的效率至少与对应的相同if / elseis / else,通常效率更高。这通常通过在运行时使用的编译时构建跳转表来完成。但是,对于解释型语言(未编译),使用switch语句时是否会显着提高效率?当然,解释器无法预先构建跳转表来提高switch语句的效率。

与相应的switch / switch / if语句相比,解释器是否能够提高elseif语句的效率来处理else语句?

1 个答案:

答案 0 :(得分:1)

我的猜测是,在解释型语言中,使用switch语句的效率优势确实小于编译语言;我能想到的唯一实际好处是,在switch语句中,操作数(与不同的'case'进行比较的操作数)将只被评估一次并将立即保存在寄存器中,这不会改变并且只与不同的“案例”进行比较,而if语句可能会错过该位并重新评估(即使成本只是从内存中读取)每个if子句的操作数。

此外,您还应该考虑可读性。在大多数情况下,这种性能差异可以忽略不计,您应该选择使您的代码更易读和易懂的选项。