An instrumenting profiler records every call, which changes the timings it is measuring — small fast functions look disproportionately expensive because the overhead is per call.
# instrumenting: exact counts, distorted timings, huge overhead
# locally, for "how many times is this called"
# sampling: statistical, a fraction of a percent, safe on a live host
# in production, for "where is the time actually going"
$ php -d extension=tideways_xhprof.so ...
Sampling belongs on a production host because the overhead is negligible and the results reflect real traffic rather than a synthetic request. Mixing the two up is how a team spends a week optimising a function that appeared expensive because it was called two million times cheaply. Both beat the third option, which is adding microtime() calls and reasoning about the numbers.