私はプロファイリングウェブアプリを持つ初心者です。プロフィールログファイルがあれば、どの情報を入手できますか?どのように私は私のアプリをより速くするために取り組む必要があるかを知ることができます。
は私がどのように解釈するか分からない、このサンプルZendのアプリケーションのインデックスページのプロフィールを持っている:私のzend Webアプリケーションのプロファイリングログを解釈するにはどうすればよいですか?
3
A
答えて
1
必要な数は累計時間である - (自身の)倍、呼び出し回数、自己を無視し、と平均時間。
累積時間の長いルーチンを見つけ、呼び出す関数が少なくて済みます。 特にこれらの関数がI/Oを行う場合。
もう1つの方法は、スクリプトを手動で中断し、手動で呼び出しスタックを記録することです。 これらのスタックサンプルを注意深く見てみると、ほとんどの場合、どのコード行が流出しているのかが正確にわかります。 More on that.
1
最初にするべきことは、兼ねて結果を並べ替えることです。最大のボトルネックは、最長のものです。次に、掘り下げてそのルーチンが何をしているのかを見て、他のメソッドを含むループを見つけようとします。それらのネストされたメソッドのヒットカウント(呼び出し)とそれらが取った時間を見てください。
例えば、MyFuncが最長の時間を費やしているとすれば、それを調べるとループがあることがわかります。ループ内で、MyOtherFuncがループ内で呼び出されているのを見て、再度テーブルを見て、MyOtherFuncを参照してください。それは200回呼ばれた? MyOtherFuncをループから外すことができるかどうかを調べます(入力として変数を変更する必要がありますか?)。
FOR (MyVar = 0 TO GetItems().Count) {
print GetItems()[MyVar].Name;
}
のgetItemsは100個のアイテムを返す場合、メソッドのgetItemsが呼び出される200回:
は、擬似コードの例では、これを見れば。プロファイラは、このような欠陥を高いヒット数で指摘します。したがって、結果をローカル変数にキャッシュします:var TempVar = GetItems();
FOR (MyVar = 0 TO TempVar.Count) {
print TempVar[MyVar].Name;
}
これで1回だけ呼び出されます。もう一度プロフィールを作成し、結果を比較してください。
警告:プロファイルを作成すると、中毒性が増します。
関連する問題
- 1. sparsennの出力をどのように解釈すればよいですか?
- 2. numpy.fft.rfft2の出力をどのように解釈すればよいですか?
- 3. glewinfoの出力をどのように解釈すればよいですか?
- 4. 私のWebアプリケーションのWebページをAndroidアプリケーションで実行するにはどうすればいいですか
- 5. Webアプリケーションでドキュメントをプレビューするにはどうすればよいですか?
- 6. IISでWebアプリケーションをどのように整理すればよいですか?
- 7. WebブラウザにKivy GUIアプリケーションをWebアプリケーションとして配置するにはどうすればよいですか?
- 8. 私のJava WebアプリケーションでGoogle翻字APIを使用するにはどうすればよいですか?
- 9. シェルスクリプト内で変数をその場で解釈するにはどうすればよいですか?
- 10. コントローラからZend Frameworkアプリケーションの設定にアクセスするにはどうすればよいですか?
- 11. ASP.NET 2.0 Webアプリケーションのグラフにはどうすればよいですか?
- 12. Zend Framework MVCアプリケーションのデフォルトのZendLogファクトリを設定するにはどうすればよいですか?
- 13. どのように各ループを解釈するのですか?
- 14. 私のASP.NETアプリケーションでC#でWebメソッドを呼び出すにはどうすればよいですか?
- 15. 分割するポイントがないコンソール値を解釈するにはどうすればよいですか?
- 16. ディストリビュータのストレージキューと制御キューのメッセージ数を解釈するにはどうすればよいですか?
- 17. float32をnumpyで4つのuint8と解釈するにはどうすればよいですか?
- 18. WindowsアプリケーションのテーマをWebと同じように設定するにはどうすればよいですか?
- 19. Webアプリケーションでシステムショートカットをバインドするにはどうすればいいですか?
- 20. Webアプリケーションで送信されたWebフォームを区別するにはどうすればよいですか?
- 21. Webアプリケーションをタッチパッドに優しいアプリケーションにするにはどうすればよいですか?
- 22. NetBeansでは、「Javaアプリケーション」プロジェクトを「Webアプリケーション」プロジェクトに変換するにはどうすればよいですか?
- 23. エスケープ文字のユーザー入力を解釈するにはどうすればよいですか?
- 24. バイトをJavaの整数として再解釈するにはどうすればよいですか?
- 25. PascalScript:Unit Importerの出力を正しく解釈するにはどうすればよいですか?
- 26. C++ - 'duplicated symbols'エラーのシンボルを解釈するにはどうすればよいですか?
- 27. パイロットヒストグラムビンはどのように解釈されますか?
- 28. JavaScriptはどのように解釈されますか?
- 29. ネイティブWebアプリケーションを構築するにはどうすればいいですか?
- 30. zendアプリケーションをドメインのサブディレクトリとして動作させるにはどうすればよいですか?
私はこの質問があまりにもオープンエンドであるかもしれないと思う。しかし、私が知っているから**私は**ここでは良い答えの恩恵を受けるだろう**。 ;-) –
プロファイリングデータを解釈する方法を説明する書籍やリソースを知っていますか? –
悲しいことに、私はそうではありません。 ;-( –