6

現在、私はxdebug profiler&を使用していKCacheGrindます。ただし、GallGrind 形式は完全なコール トレースを保存するのではなく、親子のコール トレースのみを保存します (私が話していることについては、 Kcachegrind/callgrind is inaccurate for dispatcher functions?を参照してください)。

PHP で利用可能な完全なバックトレースの視覚化を備えた視覚化を備えたプロファイラーはありますか?

私は見てきた

4

2 に答える 2

3

数か月前に、以前のプロジェクトの主要な PHP プロファイリングを行う必要がありました。

私が見つけた最良の選択肢は、facebook のxhprof with xhprof-uiでした。

両方をインストールする方法については、こちらをご覧ください。

http://blog.preinheimer.com/index.php?/archives/355-A-GUI-for-XHProf.html

いくつかの長所:

  • 使いやすいインターフェース
  • 以前のプロファイリング セッションを保存するためのデータベース バックエンド
  • 素敵なコールグラフ
于 2012-01-10T21:13:03.677 に答える
1

プロファイラーの出力を見たいだけなら、それは 1 つのことです。コードを最適化しようとしている場合は、このメソッドを忘れないでください。xdebugでできることは知っています。

とてもシンプルな考え方に基づいています。あなたのプログラムが必要以上のことをしていると仮定して、それを高速化することができます。実際、議論のために、必要以上に 9 倍の処理を行っているとします。つまり、1 秒かかると想定されていた場合、実際には 10 秒かかることになります。砂糖と小麦粉。

OK、その 10 秒間に ^C を押して停止し、その瞬間に何をしていたかを注意深く確認します。

無駄なことをしているのを見つけた確率は?実際、無駄なことをしているのに気付かなかった可能性はほとんどありません。

よくわからない場合は、繰り返してください。

無駄はそれほど大きくなくても構いません。実際、そのように一時停止し続けると、何かを複数回実行しているのを確認するとすぐに、それを取り除くことができるものであれば、確実に高速化されます。

たとえば、5 回一時停止し、そのうちの 2 回は実際には行う必要のないことを行っていることがわかった場合、どれくらい節約できるでしょうか? 正確にはわかりませんが、40% になります。20%程度と小さい場合もあります。それは簡単に 60% まで大きくなる可能性があります。ですから、どれだけ節約できるかわかりませんが、重さがわからないという理由だけで金塊を捨てることはありません。

最後に、プロファイラーがこれを検出できない問題はありません。その逆は正しくありません。

于 2012-01-10T23:16:24.670 に答える