From 15668119de40b97011a1f2e2d065d11f25a5833a Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 7 Jun 2019 12:46:49 +0300 Subject: make LRU_CAP configurable for batch db --- crates/ra_batch/src/lib.rs | 8 ++++++-- crates/ra_db/src/lib.rs | 2 ++ crates/ra_ide_api/src/db.rs | 5 +++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/crates/ra_batch/src/lib.rs b/crates/ra_batch/src/lib.rs index 02ea89306..c59821f44 100644 --- a/crates/ra_batch/src/lib.rs +++ b/crates/ra_batch/src/lib.rs @@ -43,8 +43,12 @@ fn vfs_root_to_id(r: ra_vfs::VfsRoot) -> SourceRootId { impl BatchDatabase { pub fn load(crate_graph: CrateGraph, vfs: &mut Vfs) -> BatchDatabase { let mut db = BatchDatabase { runtime: salsa::Runtime::default() }; - db.query_mut(ra_db::ParseQuery).set_lru_capacity(128); - db.query_mut(ra_hir::db::ParseMacroQuery).set_lru_capacity(128); + let lru_cap = std::env::var("RA_LRU_CAP") + .ok() + .and_then(|it| it.parse::().ok()) + .unwrap_or(ra_db::DEFAULT_LRU_CAP); + db.query_mut(ra_db::ParseQuery).set_lru_capacity(lru_cap); + db.query_mut(ra_hir::db::ParseMacroQuery).set_lru_capacity(lru_cap); db.set_crate_graph(Arc::new(crate_graph)); // wait until Vfs has loaded all roots diff --git a/crates/ra_db/src/lib.rs b/crates/ra_db/src/lib.rs index 7c49c585b..f08616100 100644 --- a/crates/ra_db/src/lib.rs +++ b/crates/ra_db/src/lib.rs @@ -65,6 +65,8 @@ pub struct FileRange { pub range: TextRange, } +pub const DEFAULT_LRU_CAP: usize = 128; + /// Database which stores all significant input facts: source code and project /// model. Everything else in rust-analyzer is derived from these queries. #[salsa::query_group(SourceDatabaseStorage)] diff --git a/crates/ra_ide_api/src/db.rs b/crates/ra_ide_api/src/db.rs index 4f19b01c4..cccf0ada4 100644 --- a/crates/ra_ide_api/src/db.rs +++ b/crates/ra_ide_api/src/db.rs @@ -49,8 +49,9 @@ impl Default for RootDatabase { db.set_crate_graph(Default::default()); db.set_local_roots(Default::default()); db.set_library_roots(Default::default()); - db.query_mut(ra_db::ParseQuery).set_lru_capacity(128); - db.query_mut(hir::db::ParseMacroQuery).set_lru_capacity(128); + let lru_cap = ra_db::DEFAULT_LRU_CAP; + db.query_mut(ra_db::ParseQuery).set_lru_capacity(lru_cap); + db.query_mut(hir::db::ParseMacroQuery).set_lru_capacity(lru_cap); db } } -- cgit v1.2.3