【问题标题】:If/Else and Switch efficiency comparison in interpreted languages解释语言中的 If/Else 和 Switch 效率比较
【发布时间】:2013-03-15 22:04:29
【问题描述】:

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

与相应的一组if/elseif/else 语句相比,解释器处理switch 语句的方式是否提高了switch 语句的效率?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2014-04-02
      • 2012-05-14
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多