GML中的switch-case语句性能是否不如函数表?

GML中的switch-case语句性能是否不如函数表?

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

内容提要

文章讨论了《Undertale》中选择对话集的代码,尽管程序员认为其效率不高,但在游戏中运行正常。文章解释了switch-case的实现及其与动态语言的关系,并质疑使用数组是否比switch-case更快。

🎯

关键要点

  • 文章讨论了《Undertale》中选择对话集的代码实现。
  • 代码使用了switch-case结构,尽管程序员认为其效率不高,但在游戏中运行正常。
  • 代码是用GameMaker Language (GML)编写的,这是一种动态语言,类似于JavaScript、Lua和Python。
  • switch-case的标准实现方式是使用'跳转表',每个case对应一个索引。
  • switch语句中的case不是布尔表达式,而是直接指向要执行的代码。
  • 在GML中,数组的功能类似于哈希映射,因此使用数组是否比switch-case更快值得质疑。

延伸问答

《Undertale》中使用switch-case的代码有什么特点?

代码使用switch-case结构来选择对话集,尽管有成千上万的case,但在游戏中运行正常。

为什么程序员认为switch-case的效率不高?

程序员认为switch-case的实现可能不够优化,尽管它在游戏中没有导致错误。

GML中的switch-case是如何实现的?

GML中的switch-case通过'跳转表'实现,每个case对应一个索引,直接指向要执行的代码。

GML的数组与switch-case有什么关系?

GML中的数组功能类似于哈希映射,因此使用数组是否比switch-case更快值得质疑。

GML是什么语言,它与哪些语言相似?

GML是动态语言,类似于JavaScript、Lua和Python,运行在虚拟机的字节码上。

switch-case中的case是如何工作的?

switch-case中的case不是布尔表达式,而是直接指向要执行的代码,避免了运行时的评估。

➡️

继续阅读