Improve dependency validator's performance #417
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.
What are you trying to accomplish?
Packwerk::Graph
has its own implementation of the topological sorting algorithm. Ruby has stdlib moduleTSort
that does the same thing (by the way,rails
use it). I replace own implementation with TSortWhat approach did you choose and why?
TSort
works much faster (benchmarks attached) with almost same output results. And it does not require attention for support own implementation.What should reviewers focus on?
The cycles shown in the test
#cycles returns overlapping cycles in a graph
differ from the original results. But the meaning remains the same (all cyclic dependencies are listed). Only the output format has changed (in some cases). I suppose that can be sacrificed in favour of performanceType of Change
Basic functionality is intact, but there is a slight difference in the output of the results of dependency validator
Checklist
Benchmarks