-3

以下のコード スニペットを検討してください。

for(i=0;i<10;i+=2) // 1
for(i=0;i<2;i=i+2) // 2

使い勝手はどちらが良いでしょうか?
パフォーマンスに違いはありますか?

4

4 に答える 4

7

以下は0.0260015秒かかりました

for (i = 0 ; i < 10000000 ; i += 2)

そして、これには 0.0170010 かかりました

for (i = 0 ; i < 10000000 ; i = i + 2)

@MasterIDは正しいですが、「コードの最適化」を有効にすると、両方とも0.0150009秒が報告されました

于 2012-08-11T15:43:58.040 に答える
5

あなたの質問に対する明確な答えはありません。それは、特にコンパイラがどれだけ賢いか (最適化レベルなど) と、ターゲット プラットフォームに依存します。これは C 言語の質問ではありません。言語自体は多かれ少なかれパフォーマンスを発揮するわけではありません。それは、コンパイラが何を構築するかに依存します。したがって、パフォーマンスがまったく重要な場合は、ユースケースでテストしてください...

そうでなければ、私のアドバイスは、あなたが読みやすいと感じる方法で書いてください。

于 2012-08-11T15:39:28.400 に答える
3

最初のオプションは、少なくとも 2 番目のオプションと同じくらい高速です。ただし、コンパイルを最適化しても同じアセンブリ コードが生成されます。

于 2012-08-11T15:41:50.913 に答える
2

どちらもまったく同じセマンティクス、つまりC言語の抽象機械でまったく同じ効果を表現します。一方が他方より遅い場合、それはコンパイラの実装品質の欠陥です。

于 2012-08-11T16:01:44.010 に答える