0

私は現在PHPでソケットサーバーを作成していますが、どちらがより高速に使用できるか知りたいです。forループはwhileループよりも速いと聞きましたが、dowhileについてはわかりません。

ありがとう

4

4 に答える 4

3

使用するベンチマークに応じて、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-- 両方を試してみて、何が得られるか見てください。次に、その教訓を次のプロジェクトに向けて捨ててください。それはユニークであり、個別のテストに値するからです。

ドキュメンテーション

于 2012-06-21T06:15:22.527 に答える
1

コードの速度が気になる場合は、プロファイリングしてください。特定のコード スニペットのパフォーマンス (たとえば、このような場所) について何を読んでも、PHP インタープリターの奇妙な癖などのために、特定のケースではうまくいかない可能性があります。

PHP プログラマーが利用できるプロファイリング ツールはたくさんあります。単純なmicrotimeから始まり、 XDebugのような完全なプロファイラー ツールキットまであります。プロファイリングの基本的なガイドラインについては、このトピックを読むことをお勧めします。

于 2012-06-21T06:14:32.013 に答える
0

基本的にはCから直接取得したループの記述方法が異なるため、それ自体に違いはありません。

影響を与える可能性があるのは、条件が評価される回数だけですが、自分で数えることができます。

したがって、最も簡潔で読みやすいものを使用してください。

于 2012-06-21T06:05:20.677 に答える
0

目的に合ったものを使用してください。forループとwhileループは、条件が最初にチェックされた状態でループするために使用されます。do-whilesは、コードが少なくとも1回実行されることを保証します。

したがって、この制約に基づいて、選択をfor/whileまたはdo-whileのいずれかにすぐに絞り込むことができます。不適切な構成を使用しようとすると、非常に醜いコードになり、とにかく遅くなる可能性があります。

しばらくの間、違いはないと思います。科学図書館を書いていたとしても、これはほとんど目立たないでしょう(あったとしても)。一般的なガイドラインは次のとおりです。forループは物事を反復処理するように設計されており、whileループは他の汎用ループとして使用されます。

于 2012-06-21T06:06:02.433 に答える