From 18a1e092e9406c6670cd38d17997325bba7bbfdc Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 30 Jun 2019 13:30:17 +0300 Subject: Move memory usage statistics to ra_prof --- crates/ra_ide_api/src/lib.rs | 6 ----- crates/ra_ide_api/src/status.rs | 54 ++--------------------------------------- 2 files changed, 2 insertions(+), 58 deletions(-) (limited to 'crates/ra_ide_api/src') diff --git a/crates/ra_ide_api/src/lib.rs b/crates/ra_ide_api/src/lib.rs index e61d5627e..28a74c003 100644 --- a/crates/ra_ide_api/src/lib.rs +++ b/crates/ra_ide_api/src/lib.rs @@ -74,12 +74,6 @@ pub use crate::{ pub use ra_db::{Canceled, CrateGraph, CrateId, FileId, FilePosition, FileRange, SourceRootId, Edition}; pub use hir::Documentation; -// We use jemalloc mainly to get heap usage statistics, actual performance -// difference is not measures. -#[cfg(feature = "jemalloc")] -#[global_allocator] -static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; - pub type Cancelable = Result; #[derive(Debug)] diff --git a/crates/ra_ide_api/src/status.rs b/crates/ra_ide_api/src/status.rs index 0cdeb15eb..ce25f4a87 100644 --- a/crates/ra_ide_api/src/status.rs +++ b/crates/ra_ide_api/src/status.rs @@ -9,6 +9,7 @@ use ra_db::{ FileTextQuery, SourceRootId, salsa::{Database, debug::{DebugQueryTable, TableEntry}}, }; +use ra_prof::{Bytes, memory_usage}; use hir::MacroFile; use crate::{ @@ -34,7 +35,7 @@ pub(crate) fn status(db: &RootDatabase) -> String { symbols_stats, syntax_tree_stats, macro_syntax_tree_stats, - MemoryStats::current(), + memory_usage(), db.last_gc.elapsed().as_secs(), ) } @@ -138,54 +139,3 @@ impl FromIterator>> for LibrarySymbols res } } - -struct MemoryStats { - allocated: Bytes, - resident: Bytes, -} - -impl MemoryStats { - #[cfg(feature = "jemalloc")] - fn current() -> MemoryStats { - jemalloc_ctl::epoch().unwrap(); - MemoryStats { - allocated: Bytes(jemalloc_ctl::stats::allocated().unwrap()), - resident: Bytes(jemalloc_ctl::stats::resident().unwrap()), - } - } - - #[cfg(not(feature = "jemalloc"))] - fn current() -> MemoryStats { - MemoryStats { allocated: Bytes(0), resident: Bytes(0) } - } -} - -impl fmt::Display for MemoryStats { - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - write!(fmt, "{} allocated {} resident", self.allocated, self.resident,) - } -} - -#[derive(Default)] -struct Bytes(usize); - -impl fmt::Display for Bytes { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let bytes = self.0; - if bytes < 4096 { - return write!(f, "{} bytes", bytes); - } - let kb = bytes / 1024; - if kb < 4096 { - return write!(f, "{}kb", kb); - } - let mb = kb / 1024; - write!(f, "{}mb", mb) - } -} - -impl std::ops::AddAssign for Bytes { - fn add_assign(&mut self, x: usize) { - self.0 += x; - } -} -- cgit v1.2.3