2011-02-08 7 views
0

私は、すべてのものが一定であれば、関数の速度は一定でなければならない、という論理/プログラマーの脳は言うので、ちょっと混乱します。Webアプリケーションのスピードを分析する

私はjqGridをフロントエンドとしてデータを表示するためのPHP Webアプリケーションを開発中です。私はパーソナルコンピュータでテストしているため、ネットワークトラフィックは適用されません。 PHP関数にHTTPリクエストを行い、データを返し、jqGridがレンダリングします。私が気付いていることは時々、Firebugはこれが時々300-600ミリ秒かかり、時には3.68秒かかると報告しています。私は非常に根本的に異なる応答時間で何度も何度もリクエストを実行することができます。

クエリは同じです。システム上のユーザー数は同じです。ネットワーク遅延はありません。同じコード。私はテスト中にコンピュータ上の他のアプリケーションを実行していません。私は後続のリクエストでパフォーマンスを向上させるクエリキャッシングを理解することができましたが、速度は韻や理由なく乱暴に変動しています。

私の質問は、応答時間にこのような変動を引き起こす可能性があることです。何をしているのかをどうやって判断できますか?もっと重要なのは、物事をより一貫させる方法はありますか?

答えて

1

Apache Benchmarking tool(ab)を使用すると、複数のアクセスと複数の同時アクセスに基づいて一連の統計情報を得ることができます。接続、処理、および処理によって分、平均、中央値、最大アクセス時間(およびstddev)待っている;パーセンタイルは、これが本当に問題であるか収差であるかを識別するための極めて有用なツールになっています。

パフォーマンスの問題の原因を診断することはできませんが、実際に問題があるかどうかを確認できます。

1

最初にすべきことは、コードをプロファイルすることです(Simplest way to profile a PHP script参照)。これにより、ボトルネックがどこにあるのかがわかり、応答時間がそんなに変動する理由を理解することができます。

0

Firebugを使用して速度を判断する場合、FirefoxとPHPの両方がキャッシュリソースであると考える必要があります。特に、PHPには、後続のランタイムを最小限に抑えるためのオペコード・キャッシュが組み込まれています。これは、最初のインスタンスでは長期実行として表示され、次にリフレッシュ時にはいくつかの短い実行が続きます。私はあなたの分析を深くするためにrfwと同意します。

関連する問題