我知道在编译源代码时,编译器会以不同的方式对待if
/elseif
/else
和switch
语句,从而使switch语句至少与相应的switch语句一样有效,而且通常更有效。这通常是通过在编译时构建在运行时使用的跳转表来完成的。但是,对于解释型语言(未编译),使用switch
语句是否会显著提高效率?当然,解释器不能预先构建跳转表来提高switch
语句的效率。
与相应的一组if
/elseif
/else
语句相比,解释器处理switch
语句的方式是否可以提高switch
语句的效率?
发布于 2013-03-31 15:53:20
我的猜测是,在解释语言中,使用switch语句的效率优势确实比编译语言小;我能想到的唯一实际好处是,在switch语句中,操作数(与不同的“case”相比较的那个)只会被计算一次,并且会立即保存在一个寄存器中,该寄存器不会改变,只与不同的“case”相比较,而if语句可能会遗漏这一位,并重新计算(即使代价只是从内存中读取)每个if子句的操作数。
此外,您还应该考虑可读性。在大多数情况下,这种性能差异可以忽略不计,您应该选择使您的代码更容易阅读和理解的选项。
https://stackoverflow.com/questions/15442812
复制相似问题