在动态语言中,switch-case语句的性能是否逊色于函数表?

在动态语言中,switch-case语句的性能是否逊色于函数表?

💡 原文英文,约400词,阅读约需2分钟。
📝

内容提要

这篇文章讨论了《Undertale》中选择对话集的代码,尽管被认为效率低下,但在游戏中运行正常。文章解释了switch-case的实现,指出跳转表能提高性能,并质疑在GML中使用数组是否真的比switch-case更快。

🎯

关键要点

  • 文章讨论了《Undertale》中选择对话集的代码,尽管效率低下,但在游戏中运行正常。
  • 代码使用了switch-case结构,处理成千上万的不同情况。
  • 许多程序员认为这段代码不够优化,但它并未导致游戏中的错误。
  • GML是一种动态语言,类似于JavaScript、Lua和Python,运行在虚拟机的字节码上。
  • switch-case的标准实现方式是使用跳转表,将每个case放入子程序中。
  • 跳转表的概念在汇编语言和虚拟机字节码编程中使用已久。
  • switch语句中的case并不是在运行时评估的布尔表达式,而是直接指向要执行的代码。
  • 在GML中,数组的功能类似于哈希映射,使用数组是否真的比使用switch-case更快值得质疑。
➡️

继续阅读