Fix #8646 for faster find of all files #8815
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.
After sleeping on it, I realized there was a simpler (less code) and slightly faster version of the previous #8806.
By recursively getting all directories and then at each directory level testing Rubocop Exclude on directories. Once directories are found at all levels, we search for files.
In addition, I replaced many of the
base_dir
string concatenations with the saferFile#join
.Benchmarks on a large project removes an additional 500+ milliseconds.
The following flamegraphs illustrate the percentage of processing
TargetFinder#target_files_in_dir
took in using the commandbundle exec rubocop -L
to list rubocop files.Original Flamegraph
Changes from #8806
Changes from this MR
Note: I didn't add an entry to the Changelog as a previous one was already added.
Before submitting the PR make sure the following are checked:
[Fix #issue-number]
(if the related issue exists).master
(if not - rebase it).bundle exec rake default
. It executes all tests and RuboCop for itself, and generates the documentation.