2016-09-09 5 views
-5

同じタスクを実行する以下の2つのコードスニペットがあります。どのコードが高速ですか?

CODE#1:

int b = 0; 
for (int i = 0; i < len; i++) 
{ 
    if (x1 == x0[i]) 
    { 
     if (y1 == y0[i]) 
     { 
      b = 1; 
      break; 
     } 
    } 
} 

CODE#2:

int b = 0; 
for (int i = 0; i < len; i++) 
{ 
    if (x1 == x0[i] && y1 == y0[i]) 
    { 
     b = 1; 
     break; 
    } 
} 

速く何CODE#1またはコード番号2? インターネットで本当に答えを探しましたが、何も見つかりませんでした。

+1

なぜあなたは宿題をしなければならないのですか?プロファイル/ベンチマーク、マシン/アセンブラコードカウントサイクルを読んでください。 – Olaf

+0

それは、その日に宇宙がどのように感じるかによって異なります。状況に最も合ったものを選んでください。 – 4castle

+0

私の宿題ではありません。私はインターネットで本当に答えを探しましたが、何も見つかりませんでした。 –

答えて

0

なし!

両方とも同じコードです。
これらは異なる書式で書かれていますが、結果を達成するためには全く同じ命令と比較を行います。したがって、それらは同じです。
だから、どちらも他のものより高速です。

+0

...それらが同一であることを見ることができる合理的に近代的な最適化コンパイラを想定しています。 –

+0

実際には、最適化されていないコンパイラ/インタプリタでも、f(n)= O(n)で終了し、同じ入力が与えられたときと同じ回数の繰り返しを実行します。 +/- 1命令程度の差があっても、何らかの形でパフォーマンスに影響を与えない定数Kです。 –

関連する問題