私は現在PHPでソケットサーバーを作成していますが、どちらがより高速に使用できるか知りたいです。forループはwhileループよりも速いと聞きましたが、dowhileについてはわかりません。
ありがとう
私は現在PHPでソケットサーバーを作成していますが、どちらがより高速に使用できるか知りたいです。forループはwhileループよりも速いと聞きましたが、dowhileについてはわかりません。
ありがとう
使用するベンチマークに応じて、do
ループはわずかに高速であることが示されています。
http://www.ebrueggeman.com/blog/php_benchmarking_loops
Test Avg Execution Time
for loop 23.44 ms
while loop 24.65 ms
do while loop 22.96 ms
このベンチマークでは、foreach
が他のループ タイプよりも優れていることが示され、 が優れているwhile
ことがわかりましたfor
。これは、私が引用した最初のテストと矛盾することに気付くでしょう。
最後に、このベンチマークwhile
は最初の調査結果をサポートしており、for
.
結論?ユースケースに基づいて決定する必要があるほど、ユースケースをエミュレートできるベンチマークはありません。これは、プログラムを大幅に改善しないマイクロ最適化である可能性があります。状況に適したステートメントを使用してから、バリエーションを使用して独自のアプリケーションをベンチマークするテストを作成します。while
とを交換するのは簡単ですfor
-- 両方を試してみて、何が得られるか見てください。次に、その教訓を次のプロジェクトに向けて捨ててください。それはユニークであり、個別のテストに値するからです。
ドキュメンテーション
コードの速度が気になる場合は、プロファイリングしてください。特定のコード スニペットのパフォーマンス (たとえば、このような場所) について何を読んでも、PHP インタープリターの奇妙な癖などのために、特定のケースではうまくいかない可能性があります。
PHP プログラマーが利用できるプロファイリング ツールはたくさんあります。単純なmicrotimeから始まり、 XDebugのような完全なプロファイラー ツールキットまであります。プロファイリングの基本的なガイドラインについては、このトピックを読むことをお勧めします。
基本的にはCから直接取得したループの記述方法が異なるため、それ自体に違いはありません。
影響を与える可能性があるのは、条件が評価される回数だけですが、自分で数えることができます。
したがって、最も簡潔で読みやすいものを使用してください。
目的に合ったものを使用してください。forループとwhileループは、条件が最初にチェックされた状態でループするために使用されます。do-whilesは、コードが少なくとも1回実行されることを保証します。
したがって、この制約に基づいて、選択をfor/whileまたはdo-whileのいずれかにすぐに絞り込むことができます。不適切な構成を使用しようとすると、非常に醜いコードになり、とにかく遅くなる可能性があります。
しばらくの間、違いはないと思います。科学図書館を書いていたとしても、これはほとんど目立たないでしょう(あったとしても)。一般的なガイドラインは次のとおりです。forループは物事を反復処理するように設計されており、whileループは他の汎用ループとして使用されます。