-
Notifications
You must be signed in to change notification settings - Fork 925
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add xhprof_frame_begin & xhprof_frame_end #52
base: master
Are you sure you want to change the base?
Conversation
Add functions for sub-function profiling. - `xhprof_frame_begin` : Starts an artificial frame. Together with `xhprof_frame_end`, this times one block of code execution as if it were a function call, allowing people to define arbitrary function boundaries. - `xhprof_frame_end` : Ends an artificial frame that `xhprof_frame_begin` started. One has to make sure there are no exceptions in between these two calls, as otherwise, it may report incorrect timings. Also, `xhprof_frame_begin` and `xhprof_frame_end` have to be paired up really well, so not to interfere with regular function's profiling, unless that's the intention. - `XhprofFrame` : Wrapper object that calls `xhprof_frame_begin` in its constructor and `xhprof_frame_end` in its destructor. This functionality was back ported from HHVM's internal XHProf implementation. There has been one small change from the HHVM implementation with the addition of the optional `$wrapped` boolean parameter to `xhprof_frame_begin` which is used to fix a bug in the upstream `XhprofFrame` implementation which mis-attibutes function calls in a frame introduced via `XhprofFrame` to `XhprofFrame::__construct` rather than the name provided for the frame.
Ping |
return; | ||
} | ||
|
||
function prodedural() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
procedural ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for pointing this out. Fixed in f9829f6.
prodedural -> procedural
🎂 I meant to ping on 2015-11-28, but better late than never as the Hallmark® cards tell me. |
Add functions for sub-function profiling.
xhprof_frame_begin
: Starts an artificial frame. Together withxhprof_frame_end
, this times one block of code execution as if itwere a function call, allowing people to define arbitrary function
boundaries.
xhprof_frame_end
: Ends an artificial frame thatxhprof_frame_begin
started. One has to make sure there are no exceptions in between these
two calls, as otherwise, it may report incorrect timings. Also,
xhprof_frame_begin
andxhprof_frame_end
have to be paired upreally well, so not to interfere with regular function's profiling,
unless that's the intention.
XhprofFrame
: Wrapper object that callsxhprof_frame_begin
in itsconstructor and
xhprof_frame_end
in its destructor.This functionality was back ported from HHVM's internal XHProf
implementation. There has been one small change from the HHVM
implementation with the addition of the optional
$wrapped
booleanparameter to
xhprof_frame_begin
which is used to fix a bug in theupstream
XhprofFrame
implementation which mis-attibutes function callsin a frame introduced via
XhprofFrame
toXhprofFrame::__construct
rather than the name provided for the frame.
Fixes #51