Performance 解释语言中的If/Else和交换机效率比较

Performance 解释语言中的If/Else和交换机效率比较,performance,if-statement,switch-statement,interpreted-language,Performance,If Statement,Switch Statement,Interpreted Language,我知道在编译源代码时,编译器会以不同的方式处理if/elseif/else和switch语句,使switch语句至少与相应的if/elseis一样有效,而且通常效率更高。这通常是通过在编译时构建一个在运行时使用的跳转表来完成的。但是,对于解释语言(未编译),使用开关语句时是否有显著的效率提高?当然,解释器不能预先构建跳转表来提高开关语句的效率 口译员处理开关语句的方式是否能提高开关语句相对于相应的语句集的效率,使用switch语句的效率优势确实小于编译语言;我所能想到的唯一实际好处是,在swit

我知道在编译源代码时,编译器会以不同的方式处理
if
/
elseif
/
else
switch
语句,使switch语句至少与相应的
if
/
elseis
一样有效,而且通常效率更高。这通常是通过在编译时构建一个在运行时使用的跳转表来完成的。但是,对于解释语言(未编译),使用
开关
语句时是否有显著的效率提高?当然,解释器不能预先构建跳转表来提高
开关
语句的效率


口译员处理
开关
语句的方式是否能提高
开关
语句相对于相应的
语句集的效率,使用switch语句的效率优势确实小于编译语言;我所能想到的唯一实际好处是,在switch语句中,操作数(与不同“cases”进行比较的操作数)将只计算一次,并立即保存在寄存器中,寄存器不会更改,只会与不同的“cases”进行比较,而if语句可能会丢失该位并重新计算(即使代价只是从内存中读取)每个if子句的操作数


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

我的猜测是,在解释语言中,使用switch语句的效率优势确实比在编译语言中要小我能想到的唯一实际好处是,在switch语句中,操作数(与不同的“cases”进行比较的操作数)将只计算一次,并立即保存在寄存器中,寄存器不会更改,只会与不同的“cases”进行比较,而if语句可能会丢失该位并重新计算(即使代价只是从内存中读取)每个if子句的操作数

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