54

kcachegrind で解析した php スクリプトに xdebug プロファイルがあります。<cycle 1>これは、特定の関数内で費やされたほとんどの時間が内部で費やされ、上位の「呼び出し元」が index.php の「include」と「include_once」から作成されたことを示すスクリーンショットです。

サイクル 1 を示す xdebug プロファイルの kcachegrind

このプロファイルは、Apache 'ab' を使用したスト​​レス テスト中に実行されたため、多くの同時接続が発生していました。

<cycle 1>xdebug プロファイルには何が表示されますか?

4

2 に答える 2

41

ヒューリスティックサイクル検出です。ツールバーから、またはメニューの「表示->サイクルの検出」または「表示->サイクルの検出を行う」からオフにすることができます。

サイクルは再帰のようなもので、直接 (f() -> f() -> f()ここで->は call を意味します) と間接 ( f()->g()->f()->g()->f())の両方です。

Callgring 形式 (kcachegrind で使用) は完全なコール スタックを保存しないため、呼び出し元と呼び出し先のペアのみが保存され、この情報からより長いサイクルを復元するのは難しい場合があります。

于 2011-09-20T16:59:33.933 に答える
28

@osgx はサイクル検出をオフにできる<cycle 1>と述べていますが、ここで指摘したいのは、興味のあるものが隠れていると感じた場合は、彼が説明しているように、おそらくサイクル検出をオフにする必要があるということです。

私の場合、サイクル検出を無効にすると、以前は欠けていたいくつかの重要な情報が実際に明らかになりました。

于 2013-08-07T16:34:53.310 に答える