【发布时间】:2016-11-05 03:36:48
【问题描述】:
所以,我有一段类似的 Javascript 代码
switch (n)
{
case 1:
// ...
case 2:
// ...
case 3:
// ...
case 4:
// ...
default:
// never happens
}
但是,我意识到存在问题,因为在检查 n 和 1 和 3 时会有冗余,因为如果 1 的第一位是关闭的,那么 3 甚至不需要被检查;同样,如果2 的第一位打开,则4 甚至不需要检查。如何优化此过程?我需要快速的代码,因为这个逻辑是运行速度非常快的游戏的一部分。
【问题讨论】:
-
cpus 在比较数字时不比较单个位。他们一次比较所有位。你在优化完全错误的东西。
-
一共多少例?
-
好吧,Knuth 博士,运行时解释
switch语句的效率比你想象的要高。 -
如果现代引擎没有自动优化它以直接跳转到正确的情况,我会有点惊讶,只要它可以确定
n始终是一个数字。 -
@Pointy:是的,这就是为什么如果这还没有优化我会感到惊讶的原因。 “跳台”是正确的术语吗?
标签: javascript algorithm optimization