Manual:Profiling/Xhprof

Starting with MediaWiki 1.25, you can use xhprof to profile code. You can install the pecl package or see if your distribution has a package for xhprof. HHVM has xhprof built in.

Installing
HHVM has xhprof built-in. For PHP5 (Zend) users:

wget https://pecl.php.net/get/xhprof-0.9.4.tgz tar xfvz xhprof-0.9.4.tgz cd xhprof-0.9.4/ cd extension/ phpize ./configure make sudo make install
 * Use the php5-xhprof package provided by your system's package manager
 * Alternatively, download the source from pecl and build manually:

After installing xhprof, be sure it's included in php.ini. It should be in a like looking like this:

extension=xhprof.so

Remember to restart apache after modifying php.ini.

On PHP 5.5-5.6 there's a bug in xhprof that may cause apache to crash. The patch provided on the bug fixed the issue for me.

Configuration
An example StartProfiler.php file:

When enabled,  unconditionally calls , and will cause a fatal error if xhprof is not installed.

In addition to the normal  options,   supports these settings:
 * Flags to pass to  (e.g. XHPROF_FLAGS_NO_BUILTINS, XHPROF_FLAGS_CPU, XHPROF_FLAGS_MEMORY). See the [//php.net/xhprof xhprof] documentation for more details.
 * Flags to pass to  (e.g. XHPROF_FLAGS_NO_BUILTINS, XHPROF_FLAGS_CPU, XHPROF_FLAGS_MEMORY). See the [//php.net/xhprof xhprof] documentation for more details.


 * Array of function names to exclude from the profiler data collection and reports.
 * Note: HHVM's implementation of xhprof does not currently respect this setting.
 * Note: HHVM's implementation of xhprof does not currently respect this setting.


 * Array of function names to include in profiling.
 * The data collected by xhprof is filtered to show only edges involving the given functions when generating reports.
 * The data collected by xhprof is filtered to show only edges involving the given functions when generating reports.