chore(perf): Make all gems load faster #28104
Open
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.
Gem.find_latest_files
's performance scales with the amount of files contained across all gems of a project. This can quickly get out of hand, especially on projects with many gems, or large gems.Gem.loaded_spec
is already populated by bundler, and we can iterate over only the name of the gems to detect those matching thegoogle-cloud-*
pattern. We can then guess the name of the file we expect to be present.On my machine, this makes
auto_load_files
go from ~100ms to <1ms, and requiringbigtable
goes from ~220ms to ~110ms.bundle exec rake ci
in the gem subdirectory.