mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-26 20:09:19 +00:00
Some minor perf improvements
This commit is contained in:
parent
51ac6de6f3
commit
06aaf20f10
9 changed files with 242 additions and 218 deletions
|
@ -84,26 +84,53 @@ impl RootDatabase {
|
|||
)*}
|
||||
}
|
||||
purge_each_query![
|
||||
// SourceDatabase
|
||||
base_db::ParseQuery
|
||||
base_db::CrateGraphQuery
|
||||
|
||||
// SourceDatabaseExt
|
||||
base_db::FileTextQuery
|
||||
base_db::FileSourceRootQuery
|
||||
base_db::SourceRootQuery
|
||||
base_db::SourceRootCratesQuery
|
||||
|
||||
// ExpandDatabase
|
||||
hir::db::AstIdMapQuery
|
||||
hir::db::DeclMacroExpanderQuery
|
||||
hir::db::ExpandProcMacroQuery
|
||||
hir::db::InternMacroCallQuery
|
||||
hir::db::InternSyntaxContextQuery
|
||||
hir::db::MacroArgQuery
|
||||
hir::db::ParseMacroExpansionQuery
|
||||
hir::db::RealSpanMapQuery
|
||||
hir::db::ProcMacrosQuery
|
||||
// SymbolsDatabase
|
||||
crate::symbol_index::ModuleSymbolsQuery
|
||||
crate::symbol_index::LibrarySymbolsQuery
|
||||
crate::symbol_index::LocalRootsQuery
|
||||
crate::symbol_index::LibraryRootsQuery
|
||||
// HirDatabase
|
||||
hir::db::InferQueryQuery
|
||||
hir::db::MirBodyQuery
|
||||
hir::db::BorrowckQuery
|
||||
hir::db::TyQuery
|
||||
hir::db::ValueTyQuery
|
||||
hir::db::ImplSelfTyQuery
|
||||
hir::db::ConstParamTyQuery
|
||||
hir::db::ConstEvalQuery
|
||||
hir::db::ConstEvalDiscriminantQuery
|
||||
hir::db::ImplTraitQuery
|
||||
hir::db::FieldTypesQuery
|
||||
hir::db::LayoutOfAdtQuery
|
||||
hir::db::TargetDataLayoutQuery
|
||||
hir::db::CallableItemSignatureQuery
|
||||
hir::db::ReturnTypeImplTraitsQuery
|
||||
hir::db::GenericPredicatesForParamQuery
|
||||
hir::db::GenericPredicatesQuery
|
||||
hir::db::TraitEnvironmentQuery
|
||||
hir::db::GenericDefaultsQuery
|
||||
hir::db::InherentImplsInCrateQuery
|
||||
hir::db::InherentImplsInBlockQuery
|
||||
hir::db::IncoherentInherentImplCratesQuery
|
||||
hir::db::TraitImplsInCrateQuery
|
||||
hir::db::TraitImplsInBlockQuery
|
||||
hir::db::TraitImplsInDepsQuery
|
||||
hir::db::InternCallableDefQuery
|
||||
hir::db::InternLifetimeParamIdQuery
|
||||
hir::db::InternImplTraitIdQuery
|
||||
hir::db::InternTypeOrConstParamIdQuery
|
||||
hir::db::InternClosureQuery
|
||||
hir::db::InternGeneratorQuery
|
||||
hir::db::AssociatedTyDataQuery
|
||||
hir::db::TraitDatumQuery
|
||||
hir::db::StructDatumQuery
|
||||
hir::db::ImplDatumQuery
|
||||
hir::db::FnDefDatumQuery
|
||||
hir::db::FnDefVarianceQuery
|
||||
hir::db::AdtVarianceQuery
|
||||
hir::db::AssociatedTyValueQuery
|
||||
hir::db::TraitSolveQueryQuery
|
||||
hir::db::ProgramClausesForChalkEnvQuery
|
||||
|
||||
// DefDatabase
|
||||
hir::db::FileItemTreeQuery
|
||||
|
@ -151,58 +178,6 @@ impl RootDatabase {
|
|||
hir::db::InternInTypeConstQuery
|
||||
hir::db::InternUseQuery
|
||||
|
||||
// HirDatabase
|
||||
hir::db::InferQueryQuery
|
||||
hir::db::MirBodyQuery
|
||||
hir::db::BorrowckQuery
|
||||
hir::db::TyQuery
|
||||
hir::db::ValueTyQuery
|
||||
hir::db::ImplSelfTyQuery
|
||||
hir::db::ConstParamTyQuery
|
||||
hir::db::ConstEvalQuery
|
||||
hir::db::ConstEvalDiscriminantQuery
|
||||
hir::db::ImplTraitQuery
|
||||
hir::db::FieldTypesQuery
|
||||
hir::db::LayoutOfAdtQuery
|
||||
hir::db::TargetDataLayoutQuery
|
||||
hir::db::CallableItemSignatureQuery
|
||||
hir::db::ReturnTypeImplTraitsQuery
|
||||
hir::db::GenericPredicatesForParamQuery
|
||||
hir::db::GenericPredicatesQuery
|
||||
hir::db::TraitEnvironmentQuery
|
||||
hir::db::GenericDefaultsQuery
|
||||
hir::db::InherentImplsInCrateQuery
|
||||
hir::db::InherentImplsInBlockQuery
|
||||
hir::db::IncoherentInherentImplCratesQuery
|
||||
hir::db::TraitImplsInCrateQuery
|
||||
hir::db::TraitImplsInBlockQuery
|
||||
hir::db::TraitImplsInDepsQuery
|
||||
hir::db::InternCallableDefQuery
|
||||
hir::db::InternLifetimeParamIdQuery
|
||||
hir::db::InternImplTraitIdQuery
|
||||
hir::db::InternTypeOrConstParamIdQuery
|
||||
hir::db::InternClosureQuery
|
||||
hir::db::InternGeneratorQuery
|
||||
hir::db::AssociatedTyDataQuery
|
||||
hir::db::TraitDatumQuery
|
||||
hir::db::StructDatumQuery
|
||||
hir::db::ImplDatumQuery
|
||||
hir::db::FnDefDatumQuery
|
||||
hir::db::FnDefVarianceQuery
|
||||
hir::db::AdtVarianceQuery
|
||||
hir::db::AssociatedTyValueQuery
|
||||
hir::db::TraitSolveQueryQuery
|
||||
hir::db::ProgramClausesForChalkEnvQuery
|
||||
|
||||
// SymbolsDatabase
|
||||
crate::symbol_index::ModuleSymbolsQuery
|
||||
crate::symbol_index::LibrarySymbolsQuery
|
||||
crate::symbol_index::LocalRootsQuery
|
||||
crate::symbol_index::LibraryRootsQuery
|
||||
|
||||
// LineIndexDatabase
|
||||
crate::LineIndexQuery
|
||||
|
||||
// InternDatabase
|
||||
hir::db::InternFunctionQuery
|
||||
hir::db::InternStructQuery
|
||||
|
@ -219,6 +194,30 @@ impl RootDatabase {
|
|||
hir::db::InternMacro2Query
|
||||
hir::db::InternProcMacroQuery
|
||||
hir::db::InternMacroRulesQuery
|
||||
|
||||
// ExpandDatabase
|
||||
hir::db::AstIdMapQuery
|
||||
hir::db::DeclMacroExpanderQuery
|
||||
hir::db::ExpandProcMacroQuery
|
||||
hir::db::InternMacroCallQuery
|
||||
hir::db::InternSyntaxContextQuery
|
||||
hir::db::MacroArgQuery
|
||||
hir::db::ParseMacroExpansionQuery
|
||||
hir::db::RealSpanMapQuery
|
||||
hir::db::ProcMacrosQuery
|
||||
|
||||
// LineIndexDatabase
|
||||
crate::LineIndexQuery
|
||||
|
||||
// SourceDatabase
|
||||
base_db::ParseQuery
|
||||
base_db::CrateGraphQuery
|
||||
|
||||
// SourceDatabaseExt
|
||||
base_db::FileTextQuery
|
||||
base_db::FileSourceRootQuery
|
||||
base_db::SourceRootQuery
|
||||
base_db::SourceRootCratesQuery
|
||||
];
|
||||
|
||||
acc.sort_by_key(|it| std::cmp::Reverse(it.1));
|
||||
|
|
|
@ -145,7 +145,7 @@ impl RootDatabase {
|
|||
db.set_local_roots_with_durability(Default::default(), Durability::HIGH);
|
||||
db.set_library_roots_with_durability(Default::default(), Durability::HIGH);
|
||||
db.set_expand_proc_attr_macros_with_durability(false, Durability::HIGH);
|
||||
db.update_parse_query_lru_capacity(lru_capacity);
|
||||
db.update_base_query_lru_capacities(lru_capacity);
|
||||
db.setup_syntax_context_root();
|
||||
db
|
||||
}
|
||||
|
@ -154,11 +154,12 @@ impl RootDatabase {
|
|||
self.set_expand_proc_attr_macros_with_durability(true, Durability::HIGH);
|
||||
}
|
||||
|
||||
pub fn update_parse_query_lru_capacity(&mut self, lru_capacity: Option<usize>) {
|
||||
pub fn update_base_query_lru_capacities(&mut self, lru_capacity: Option<usize>) {
|
||||
let lru_capacity = lru_capacity.unwrap_or(base_db::DEFAULT_PARSE_LRU_CAP);
|
||||
base_db::ParseQuery.in_db_mut(self).set_lru_capacity(lru_capacity);
|
||||
// macro expansions are usually rather small, so we can afford to keep more of them alive
|
||||
hir::db::ParseMacroExpansionQuery.in_db_mut(self).set_lru_capacity(4 * lru_capacity);
|
||||
hir::db::BorrowckQuery.in_db_mut(self).set_lru_capacity(base_db::DEFAULT_BORROWCK_LRU_CAP);
|
||||
}
|
||||
|
||||
pub fn update_lru_capacities(&mut self, lru_capacities: &FxHashMap<Box<str>, usize>) {
|
||||
|
@ -176,6 +177,12 @@ impl RootDatabase {
|
|||
.copied()
|
||||
.unwrap_or(4 * base_db::DEFAULT_PARSE_LRU_CAP),
|
||||
);
|
||||
hir_db::BorrowckQuery.in_db_mut(self).set_lru_capacity(
|
||||
lru_capacities
|
||||
.get(stringify!(BorrowckQuery))
|
||||
.copied()
|
||||
.unwrap_or(base_db::DEFAULT_BORROWCK_LRU_CAP),
|
||||
);
|
||||
|
||||
macro_rules! update_lru_capacity_per_query {
|
||||
($( $module:ident :: $query:ident )*) => {$(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue