internal: add prime-caches
subcommand
#19565
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.
I found this subcommand to be useful for profiling cache priming. Here's one result that came from running
~/.cargo/bin/rust-analyzer prime-caches .
on buck2:syntax::parse
is 20%hir_expand::db::parse_macro_expansion
is 32% of the runtime.hir_expand::db::macro_expand
is 19%.hir_expand::declarative::DeclarativeMacroExpander::expand
.hir_expand::builtin::derive_macro::BuiltinDeriveExpander::expand
.hir_expand::db::token_tree_to_syntax_node
is 13%.hir_def::item_tree::ItemTree::file_item_tree_with_source_map_query
, with the bulk of it beinghir_def::item_tree::lower::Ctx::lower_module_items
. Since refactor: Lower type-refs before type inference #19462 landed, this is now roughly ~10%.