I have an xdebug profile on a php script that I parsed with kcachegrind. Here is a screenshot showing that the most time spent inside any given function was spent inside <cycle 1>
and the top 'Callers' were made from 'include' and 'include_once' in index.php.
This profile was run during a stress-test using apache 'ab' so there were many concurrent connections occurring.
What does <cycle 1>
indicate on an xdebug profile?
It is heuristic cycle detection. You can turn it off from toolbar or from menu "View->Detect cycles" or "View->Do cycle detection".
Cycle is something like recursion, both direct ( f() -> f() -> f()
where ->
means call ) and indirect ( f()->g()->f()->g()->f()
)
Callgring format (used in kcachegrind) is not saving full call stack, it stores only pairs caller-callee and it may be hard to restore longer cycles from this information