プログラミングで広く使用されているにもかかわらず、無限ループの「for (; ;)」は、そのパフォーマンスと明確さに関して疑問を引き起こしています。この記事では、この不可思議な構文の背後にある効率と推論を明らかにします。
パフォーマンスの比較
一般に信じられていることに反して、「for (; ;)」は本質的にはそうではありません。 「while(true)」よりも高速です。どちらの構成も、同じアセンブリ命令にコンパイルされます。認識されるパフォーマンスの違いは、オプティマイザーによる処理の違いに起因する可能性がありますが、実際には無視できます。
なぜ "for (; ;)" を使用するのですか?
より遅い場合、「for (; ;)」はよりコンパクトで、おそらくより慣用的であるため存続します。これにより、ループ変数をインクリメントまたはデクリメントするときに構文エラーが発生する可能性が回避されます。さらに、ループ条件のローカル変数を不必要に宣言しません。
マクロを定義しますか?
「while(true)」を「」に置き換えるマクロを定義しています。 for (; ;)」は可能ですが、推奨されません。特にマクロが複数のコンテキストで使用されている場合、コードのメンテナンス中またはデバッグ中に混乱が生じる可能性があります。
推奨事項
最終的には、「for (; ;)" と "while(true)" は個人的な好みの問題です。パフォーマンスは要因ではなく、「for (; ;)」のコンパクトな構文により、無限ループを実行するための「while(true)」の有効な代替手段となります。
関連質問: "while( 1) or while(2)?"
この関連質問は、無限ループのパフォーマンスに関する同様の誤解を浮き彫りにしています。ループ条件として 1 を使用するか 2 を使用するかは、効率には影響しません。コンパイラは定数条件を条件付きジャンプ命令に最適化し、同一のアセンブリ コードを生成します。
以上が`for(;;)` と `while(true)`: どちらの無限ループがより効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。