1

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

与相应的/ /语句集相比,解释器是否以switch提高语句效率的方式处理语句?switchifelseifelse

4

1 回答 1

1

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

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

于 2013-03-31T07:53:19.657 回答