for循环和if语句定位效率

时间:2013-07-16 02:48:20

标签: performance if-statement for-loop

我正在使用for循环和if语句做一些简单的逻辑,我想知道以下哪两个定位更好,或两者之间是否存在显着的性能差异。

案例1:

if condition-is-true:
   for loop of length n:
      common code
      do this
else:
   another for loop of length n
      common code
      do that

案例2:

for loop of length n:
   common code
   if condition-is-true:
      do this
   else:
      do that

基本上,我有一个for循环需要根据条件稍微不同地执行,但是无论如何都需要在for循环中执行某些东西。我更喜欢第二个,因为我不必重复两次commond代码,但我想知道情况1是否会表现得更好?

我知道在big-O表示法方面它并不重要,因为if-else语句无论如何都是常量,但我真实想知道数据集不是太大(也许n =少数)成千上万),如果这两个案例有所不同。

谢谢!

1 个答案:

答案 0 :(得分:2)

第一个是好的,因为不需要每次检查条件,但在第二种情况下,你必须在非常迭代时检查条件。但是你的代码长度会很长。如果代码大小很重要,那么将公共代码放入方法中,只需调用方法而不是公共代码块。