kaizen: add analyzer, misc cleanup #326
Merged
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.
This adds the function
analyze()
to coreMatcher. It visits all of the fieldMatcher and valueMatcher states and gathers statistics (at the moment, just the maximum nondeterministic concurrency). For the moment, this is strictly an (extremely useful) tool for developers trying to optimize NFA construction/traversal.Its output could be used in practice to increase the performance of the pathological case illustrated by
TestShellStyleBuildTime()
, which slows down to <10K/second when you add 13K wildcard patterns, but thatparticular optimization requires much more thinking.
No public API yet, but this could evolve into something similar to Ruler's
MachineComplexityEvaluator
public API although I'm not happy with the metric that API generates.Also in this commit: Miscellaneous code cleanups including fixing a new lint problem detected by recent
golangci-lint
, and restoring tests that had been commented out because of the NFA state explosion.