什么是更快的:许多如果,或者如果?

2022-08-30 15:23:55

我正在迭代一个数组,并按值将其排序为一周中的几天。

为了做到这一点,我使用了许多语句。如果我使用多个s,而不是一组语句,对处理速度有什么影响吗?ififelse if


答案 1

是的,如果使用 else,请考虑以下代码:

if(predicateA){
  //do Stuff
}
if(predicateB){
  // do more stuff
}

if(predicateA){
  //
}
else if(predicateB){
  //
}

在第二种情况下,如果谓词A为真,则不需要评估谓词B(以及任何进一步的谓词)(因此整个代码的执行速度会更快),而在第一个示例中,如果谓词A为真,则仍然将始终计算谓词B,并且如果谓词A和谓词B不相互排斥,您也可能得到一些意想不到的结果。


答案 2

我怀疑像这样的微优化是否会对你的代码产生可衡量的差异。

排序算法更有可能成为性能问题的根源。您选择的排序算法将是至关重要的,而不是很多“ifs”与“else if”。

更新:

其他人关于“else if”是一个更好的选择的观点,由于其早期退出和排他性逻辑特征,表明在这种情况下,它应该优先于“如果”。

但是关于算法选择的观点仍然存在 - 除非你的数据集非常小。

很明显,O(log n)会比O(n^2)更好,但数据集的大小也很重要。如果只有几个元素,则可能不会注意到差异。在这种情况下,以最干净,最可读,最容易理解的方法编写一个低效的方法可能是你最好的选择。


推荐