Repository navigation
[perf] Profile the real worker in hotspot profiler via --xdebug - #8747
Merged
Merged
Conversation
Without --xdebug, Rector's XdebugHandler restarts the process without xdebug before the container boots, so the cachegrind only covered the thin pre-restart launcher (proc_close + bootstrap, no processing rows). Passing --xdebug skips the restart and keeps xdebug live for the real in-process run, which --withoutParallel() already keeps in this same process. The profile now ranks the actual FileTypeMapper / NodeScopeResolver / RectorRunner work.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The committed
scripts/rector-hotspot-profile.phpdrovebin/rector processunder the Xdebug profiler but omitted the--xdebugflag.Without that flag, Rector's
XdebugHandlerrestarts the process without xdebug before the container boots, so the cachegrind only covered the thin pre-restart launcher - every run showedproc_closeplus bootstrap and zeroRector\/PHPStan\processing rows, making the profiler useless for its stated purpose (finding processing hot spots).Passing
--xdebugskips the restart and keeps xdebug live for the real in-process run, which--withoutParallel()(already in the generated config) keeps in this same process - no worker child.Smoke-tested on
rules/Php74: the profile now ranks the actual work (FileTypeMapper::processNodes,NodeScopeResolver,RectorRunner::run), not bootstrap.One-line change to the profiled command plus an explanatory comment.