aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
Diffstat (limited to 'crates')
-rw-r--r--crates/ra_prof/src/memory_usage.rs37
-rw-r--r--crates/rust-analyzer/src/cli/analysis_stats.rs14
2 files changed, 25 insertions, 26 deletions
diff --git a/crates/ra_prof/src/memory_usage.rs b/crates/ra_prof/src/memory_usage.rs
index 745345fac..22b61e4a2 100644
--- a/crates/ra_prof/src/memory_usage.rs
+++ b/crates/ra_prof/src/memory_usage.rs
@@ -3,9 +3,22 @@ use std::fmt;
3 3
4use cfg_if::cfg_if; 4use cfg_if::cfg_if;
5 5
6#[derive(Copy, Clone)]
6pub struct MemoryUsage { 7pub struct MemoryUsage {
7 pub allocated: Bytes, 8 pub allocated: Bytes,
8 pub resident: Bytes, 9}
10
11impl fmt::Display for MemoryUsage {
12 fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
13 write!(fmt, "{}", self.allocated)
14 }
15}
16
17impl std::ops::Sub for MemoryUsage {
18 type Output = MemoryUsage;
19 fn sub(self, rhs: MemoryUsage) -> MemoryUsage {
20 MemoryUsage { allocated: self.allocated - rhs.allocated }
21 }
9} 22}
10 23
11impl MemoryUsage { 24impl MemoryUsage {
@@ -13,26 +26,20 @@ impl MemoryUsage {
13 cfg_if! { 26 cfg_if! {
14 if #[cfg(target_os = "linux")] { 27 if #[cfg(target_os = "linux")] {
15 // Note: This is incredibly slow. 28 // Note: This is incredibly slow.
16 let alloc = unsafe { libc::mallinfo() }.uordblks as u32 as usize; 29 let alloc = unsafe { libc::mallinfo() }.uordblks as u32 as isize;
17 MemoryUsage { allocated: Bytes(alloc), resident: Bytes(0) } 30 MemoryUsage { allocated: Bytes(alloc) }
18 } else { 31 } else {
19 MemoryUsage { allocated: Bytes(0), resident: Bytes(0) } 32 MemoryUsage { allocated: Bytes(0) }
20 } 33 }
21 } 34 }
22 } 35 }
23} 36}
24 37
25impl fmt::Display for MemoryUsage {
26 fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
27 write!(fmt, "{} allocated {} resident", self.allocated, self.resident,)
28 }
29}
30
31#[derive(Default, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)] 38#[derive(Default, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
32pub struct Bytes(usize); 39pub struct Bytes(isize);
33 40
34impl Bytes { 41impl Bytes {
35 pub fn megabytes(self) -> usize { 42 pub fn megabytes(self) -> isize {
36 self.0 / 1024 / 1024 43 self.0 / 1024 / 1024
37 } 44 }
38} 45}
@@ -42,10 +49,10 @@ impl fmt::Display for Bytes {
42 let bytes = self.0; 49 let bytes = self.0;
43 let mut value = bytes; 50 let mut value = bytes;
44 let mut suffix = "b"; 51 let mut suffix = "b";
45 if value > 4096 { 52 if value.abs() > 4096 {
46 value /= 1024; 53 value /= 1024;
47 suffix = "kb"; 54 suffix = "kb";
48 if value > 4096 { 55 if value.abs() > 4096 {
49 value /= 1024; 56 value /= 1024;
50 suffix = "mb"; 57 suffix = "mb";
51 } 58 }
@@ -56,7 +63,7 @@ impl fmt::Display for Bytes {
56 63
57impl std::ops::AddAssign<usize> for Bytes { 64impl std::ops::AddAssign<usize> for Bytes {
58 fn add_assign(&mut self, x: usize) { 65 fn add_assign(&mut self, x: usize) {
59 self.0 += x; 66 self.0 += x as isize;
60 } 67 }
61} 68}
62 69
diff --git a/crates/rust-analyzer/src/cli/analysis_stats.rs b/crates/rust-analyzer/src/cli/analysis_stats.rs
index 66d201ba6..cf0d82b62 100644
--- a/crates/rust-analyzer/src/cli/analysis_stats.rs
+++ b/crates/rust-analyzer/src/cli/analysis_stats.rs
@@ -111,11 +111,7 @@ pub fn analysis_stats(
111 eprintln!("Total declarations: {}", num_decls); 111 eprintln!("Total declarations: {}", num_decls);
112 eprintln!("Total functions: {}", funcs.len()); 112 eprintln!("Total functions: {}", funcs.len());
113 let item_collection_memory = ra_prof::memory_usage(); 113 let item_collection_memory = ra_prof::memory_usage();
114 eprintln!( 114 eprintln!("Item Collection: {:?}, {}", analysis_time.elapsed(), item_collection_memory);
115 "Item Collection: {:?}, {}",
116 analysis_time.elapsed(),
117 item_collection_memory.allocated
118 );
119 115
120 if randomize { 116 if randomize {
121 shuffle(&mut rng, &mut funcs); 117 shuffle(&mut rng, &mut funcs);
@@ -140,7 +136,7 @@ pub fn analysis_stats(
140 eprintln!( 136 eprintln!(
141 "Parallel Inference: {:?}, {}", 137 "Parallel Inference: {:?}, {}",
142 inference_time.elapsed(), 138 inference_time.elapsed(),
143 ra_prof::memory_usage().allocated 139 ra_prof::memory_usage()
144 ); 140 );
145 } 141 }
146 142
@@ -297,11 +293,7 @@ pub fn analysis_stats(
297 293
298 let inference_time = inference_time.elapsed(); 294 let inference_time = inference_time.elapsed();
299 let total_memory = ra_prof::memory_usage(); 295 let total_memory = ra_prof::memory_usage();
300 eprintln!( 296 eprintln!("Inference: {:?}, {}", inference_time, total_memory - item_collection_memory);
301 "Inference: {:?}, {}",
302 inference_time,
303 total_memory.allocated - item_collection_memory.allocated
304 );
305 297
306 let analysis_time = analysis_time.elapsed(); 298 let analysis_time = analysis_time.elapsed();
307 eprintln!("Total: {:?}, {}", analysis_time, total_memory); 299 eprintln!("Total: {:?}, {}", analysis_time, total_memory);