diff options
Diffstat (limited to 'crates/ra_prof/src')
-rw-r--r-- | crates/ra_prof/src/lib.rs | 10 | ||||
-rw-r--r-- | crates/ra_prof/src/memory_usage.rs | 21 |
2 files changed, 10 insertions, 21 deletions
diff --git a/crates/ra_prof/src/lib.rs b/crates/ra_prof/src/lib.rs index b54531b4e..ba5609703 100644 --- a/crates/ra_prof/src/lib.rs +++ b/crates/ra_prof/src/lib.rs | |||
@@ -13,16 +13,6 @@ pub use crate::{ | |||
13 | memory_usage::{Bytes, MemoryUsage}, | 13 | memory_usage::{Bytes, MemoryUsage}, |
14 | }; | 14 | }; |
15 | 15 | ||
16 | // We use jemalloc mainly to get heap usage statistics, actual performance | ||
17 | // difference is not measures. | ||
18 | #[cfg(all(feature = "jemalloc", not(target_env = "msvc")))] | ||
19 | #[global_allocator] | ||
20 | static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; | ||
21 | |||
22 | #[cfg(all(feature = "mimalloc"))] | ||
23 | #[global_allocator] | ||
24 | static ALLOC: mimalloc::MiMalloc = mimalloc::MiMalloc; | ||
25 | |||
26 | /// Prints backtrace to stderr, useful for debugging. | 16 | /// Prints backtrace to stderr, useful for debugging. |
27 | #[cfg(feature = "backtrace")] | 17 | #[cfg(feature = "backtrace")] |
28 | pub fn print_backtrace() { | 18 | pub fn print_backtrace() { |
diff --git a/crates/ra_prof/src/memory_usage.rs b/crates/ra_prof/src/memory_usage.rs index 9768f656c..ee79ec3ee 100644 --- a/crates/ra_prof/src/memory_usage.rs +++ b/crates/ra_prof/src/memory_usage.rs | |||
@@ -1,26 +1,25 @@ | |||
1 | //! FIXME: write short doc here | 1 | //! FIXME: write short doc here |
2 | |||
3 | use std::fmt; | 2 | use std::fmt; |
4 | 3 | ||
4 | use cfg_if::cfg_if; | ||
5 | |||
5 | pub struct MemoryUsage { | 6 | pub struct MemoryUsage { |
6 | pub allocated: Bytes, | 7 | pub allocated: Bytes, |
7 | pub resident: Bytes, | 8 | pub resident: Bytes, |
8 | } | 9 | } |
9 | 10 | ||
10 | impl MemoryUsage { | 11 | impl MemoryUsage { |
11 | #[cfg(all(feature = "jemalloc", not(target_env = "msvc")))] | ||
12 | pub fn current() -> MemoryUsage { | 12 | pub fn current() -> MemoryUsage { |
13 | jemalloc_ctl::epoch::advance().unwrap(); | 13 | cfg_if! { |
14 | MemoryUsage { | 14 | if #[cfg(target_os = "linux")] { |
15 | allocated: Bytes(jemalloc_ctl::stats::allocated::read().unwrap()), | 15 | // Note: This is incredibly slow. |
16 | resident: Bytes(jemalloc_ctl::stats::resident::read().unwrap()), | 16 | let alloc = unsafe { libc::mallinfo() }.uordblks as u32 as usize; |
17 | MemoryUsage { allocated: Bytes(alloc), resident: Bytes(0) } | ||
18 | } else { | ||
19 | MemoryUsage { allocated: Bytes(0), resident: Bytes(0) } | ||
20 | } | ||
17 | } | 21 | } |
18 | } | 22 | } |
19 | |||
20 | #[cfg(any(not(feature = "jemalloc"), target_env = "msvc"))] | ||
21 | pub fn current() -> MemoryUsage { | ||
22 | MemoryUsage { allocated: Bytes(0), resident: Bytes(0) } | ||
23 | } | ||
24 | } | 23 | } |
25 | 24 | ||
26 | impl fmt::Display for MemoryUsage { | 25 | impl fmt::Display for MemoryUsage { |