假设这个结构
switch(foo) {
case "foo":
// ...
break;
case "bar":
// ...
break;
...
default:
// ...
break;
}
或类似的条件块(仅限通用逻辑运算符),从性能角度来看,将最可能的条件放在首位是否有意义?
如果是这样,它开始有意义的阈值是什么?与找出最可能的情况的"麻烦"是什么?
这种微优化带来的问题比解决的问题要多。使用Javascript,由于JS引擎抽象了许多实现细节,因此评估这些结构相对困难。剖析可能也不会很有见地。
JS是一种脚本语言,不是c语言。顺便说一句,这应该一直是你的口头禅,不管你用什么语言写。
答案是肯定的,这是有意义的。如果你知道某件事有更高的真实性为什么不把它放在第一种条件下呢?我相信这是一个很好的编程,即使是在脚本语言中。
但是,仅仅因为它有意义,并不意味着它是必要的。如果是不经常运行的代码,那么顺序的重要性可以忽略不计。但是,在带有几个条件语句的大循环中的代码可能会略微减慢算法的速度。当你注意到一个延迟的时候,你就该担心了。即使这样,重构条件的顺序也可能是我要做的事情列表的底部。
当你随机暂停它几次时,你会看到它在执行switch语句的过程中购买任何东西,而不是完全在其他地方。