在动态语言中,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更快值得质疑。

延伸问答

《Undertale》中选择对话集的代码使用了什么结构?

代码使用了switch-case结构来处理成千上万的不同情况。

为什么许多程序员认为《Undertale》的代码不够优化?

许多程序员认为这段代码效率低下,但它在游戏中运行正常,没有导致错误。

GML语言与其他语言有什么相似之处?

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

switch-case的标准实现方式是什么?

switch-case的标准实现方式是使用跳转表,将每个case放入子程序中。

在GML中,数组的功能与什么相似?

在GML中,数组的功能类似于哈希映射。

使用数组是否真的比使用switch-case更快?

使用数组是否比使用switch-case更快值得质疑,因为两者在某些方面功能相似。

➡️

继续阅读