-2

PHP の if ステートメントが評価されるときのサーバーへの影響、つまりメモリ消費と CPU 使用率に興味があります。トラフィックが増加するにつれて、これが大きな問題になる可能性はありますか?

たとえば、WordPress ブログの各記事の要約のテーマで PHP IF ステートメントを大量に使用する場合、ホームページのトラフィックが増え始めると、サーバー リソースがさらに大量に必要になるのでしょうか? そして、投稿が多いページ(カテゴリーページなど)では、これが問題になりそうです。

トラフィックが急増した場合に備えて、絶対に必要ではない IF ステートメントを削減することをお勧めします。それとも、これは私が心配していることでもありますか?

4

4 に答える 4

10

何千ものステートメントの評価に費やされた時間はif、単一のデータベース クエリに完全に圧倒されます。

必要がある:

  1. ボトルネックがどこにあるかを調べるためのプロファイル
  2. フォーカス- 関数が合計時間の 50% を占める場合、それを 10% 高速化することは、小さな関数を 90% 高速化するよりも大きな効果があります。

編集:

データベース クエリ(たとえ高速であっても) 低速です。妥当な範囲内で、できるだけ少ないクエリを作成することを目指す必要があります。クエリ内では、NULL のチェックと特定の値のチェックの間に速度の違いはないと思います。ある場合、わずかな違いになります。

于 2009-08-16T19:27:11.030 に答える
2

これについては心配する必要はないと思います。アプリケーションがデータベースに対して 1 つまたは 2 つのクエリを実行する場合、「if」を数回 (さらには 2 回以上) 実行するよりもはるかに時間がかかります。

これは一種の「マイクロ最適化」です。トラフィックが急増した場合に大きな最適化を探している場合は、最初に検討すべき他の方法があります ;-)

いくつかの(かなり長い)説明/アイデアについては、昨日別の質問に 回答したこの回答をご覧ください。
(少なくとも数日が経過する前に、それを書き直す気がしません^^)

基本的に、本当に役立つのは次のとおりです。

  • APCなどのオペコード キャッシュの使用
  • キャッシングの使用: キャッシュするデータが多いほど、実行する必要がある計算/DB クエリが少なくなります。これらは、一般的に最も重要な時間を要するものです。
  • Xdebugとそのプロファイリング機能を使用して、アプリケーションで時間がかかるものを特定する
  • 適切なインデックスを使用して SQL クエリを最適化する
  • さらに先に進みたい場合は、リバース プロキシを使用して別のレベルのキャッシュとして機能させることができます。たとえば、ワニス
于 2009-08-16T19:26:44.617 に答える
2

心配する必要はまったくありません。

于 2009-08-16T19:29:05.097 に答える
0

それが重要ではない理由をもっと論理的に説明する必要があると思います....それは、アセンブラーの基本レベルの IF ステートメントがJNZニーモニックを下回っているためです。これは、「JUMP IF NOT ZERO」を意味する 1 ワードの値です。実際に大きな負荷がかかるのは、IF ステートメント自体ではなく、条件の比較と評価です。

于 2009-08-16T22:13:47.337 に答える