Emit timing information for rule applications#799
Merged
Conversation
Resyntax now records how much time it spends testing each refactoring rule on each syntax object. Once per analyzed source, it logs a table mapping rule names to the total time spent checking that rule, summed across each individual application. The table is logged with the resyntax debug logger. Fixes #798. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Resyntax analyzed 1 file in this pull request and found no issues.
The timing measurements are only used by the debug log message, so skip the clock reads and hash updates entirely when no log receiver is listening at debug level. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Resyntax analyzed 1 file in this pull request and found no issues.
Contributor
There was a problem hiding this comment.
Resyntax analyzed 1 file in this pull request and found no issues.
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.
Fixes #798.
Resyntax now records how much time it spends testing each refactoring rule on each syntax object to see if it produces a suggestion. Once per analyzed source, it logs a table mapping rule names to the total time spent checking that rule, summed across each individual application. The table is logged with the resyntax debug logger.
Implementation:
refactoring-rules-refactortakes a#:rule-timingsmutable hash and wraps each rule application in arefactor/timedhelper that measures elapsed time withcurrent-inexact-monotonic-millisecondsand accumulates it per rule name.refactor-visited-formscreates the hash, threads it through all visited forms of a source, then logs the table via a newlog-rule-timingshelper. The helper guards on(log-level? resyntax-logger 'debug)so the pretty-printed table is only built when a receiver is listening at debug level.Example output from
PLTSTDERR="debug@resyntax error" resyntax analyze --file demo.rkt:Testing: added a test that attaches a debug-level log receiver, runs
resyntax-analyze, and checks that exactly one timing message is emitted for the analyzed source.raco test main.rkt test/passes.🤖 Generated with Claude Code