我用谷歌搜索了一下,但我仍然觉得迷路了。我正在用 JavaScript 编写一个 CPU 模拟器(目前在我的情况下是 Z80)。它的内心有一个巨大的switch语句。虽然我当然可以运行一些基准测试,但我不能确定未来不同浏览器的 JavaScript 引擎(好吧,没有人可以,我知道,但是这里应该有人比我更了解不同浏览器的 JavaScript 引擎...... )。
使用其他构造比使用 switch 语句更快吗?像函数数组等。还有类似的问题:我有可能有前缀 Z80 操作码的情况。开关的某些“案例”分支内部需要另一个开关,但不是全部。我正在考虑将整个东西转换成一个更大的(但只有一层“深”)开关结构,使操作码在 0-255 之间正常,256-511 作为 0xDD 前缀等,其中一些会有更多的“案例”(没有中断)对于单个相同的代码。或者我是否应该尽可能避免使用大的 switch 语句,即使是基本操作码表(256 个“case”分支)?
对于 C 代码,编译器会在这种情况下创建一个非常快的跳转表。但是关于 javascript 呢?
另一个类似的问题:只有两个“case”分支和一个“default”条目的 switch 语句是否值得,或者确实是 if ... else 更好的情况?
在我的 switch 构造中声明我只使用数字(和整数——尽管它在 JavaScript 中并不意味着太多,因为 AFAIK 它只有一种数字类型)值可能很重要。