我们参与了关于如何提高代码效率的讨论,并讨论了if (a==1) {
//... tasks
} else if (a==2) {
//... tasks
}
...
} else if (a==9) {
//... tasks
}
上的分支主题,这就出现了。
考虑以下代码:
if (a<=4) {
if (a==1) {
//... tasks
} else if (a==2) {
//... tasks
}
...
} else {
if (a==5) {
//... tasks
} else if (a==6) {
//... tasks
}
...
}
讨论证明,上层代码的效率低于下面的代码,因为必须对代码的下半部分进行比较。
考虑这个选择:
a=5,6,7, or 8
在上述情况下,检查switch
需要较少的比较次数,显然效率更高。但我从来没有遇到过使用这种逻辑的代码。大多数代码通常使用前一代码段中提到的if
语句或正常"{
click : myClickFunction,
render : myRenderFunction
}"
条件。后一个代码真的更有效还是需要相同的时间?
编辑:以上只是一个例子。一般的想法是将不相交的条件集与条件库区分开来,然后根据不相交的原因应用额外的条件。
答案 0 :(得分:3)
是的,第二个代码在普通情况下效率更高。
您通常不会看到此类代码有三个原因:
改善相对较小。数量取决于您的CPU,但您只保存一个数字的CPU周期数。
对代码可读性的影响很严重。
需要优化的代码量通常少于编写代码的百分之一。
你知道,对于绝大多数代码来说,它根本就不值得。
另请注意,第二个代码可能比第一个代码慢:如果a == 1
是绝大多数情况,则第二个代码不必要地添加第二个代码。关键路径。如果不了解您的关键路径,就不要优化。