diff options
Diffstat (limited to 'crates/ra_cli')
-rw-r--r-- | crates/ra_cli/Cargo.toml | 1 | ||||
-rw-r--r-- | crates/ra_cli/src/analysis_stats.rs | 11 | ||||
-rw-r--r-- | crates/ra_cli/src/main.rs | 4 |
3 files changed, 13 insertions, 3 deletions
diff --git a/crates/ra_cli/Cargo.toml b/crates/ra_cli/Cargo.toml index b10873cd8..639b7c949 100644 --- a/crates/ra_cli/Cargo.toml +++ b/crates/ra_cli/Cargo.toml | |||
@@ -20,3 +20,4 @@ ra_db = { path = "../ra_db" } | |||
20 | [dependencies.ra_prof] | 20 | [dependencies.ra_prof] |
21 | path = "../ra_prof" | 21 | path = "../ra_prof" |
22 | # features = [ "cpuprofiler" ] | 22 | # features = [ "cpuprofiler" ] |
23 | # features = [ "jemalloc" ] | ||
diff --git a/crates/ra_cli/src/analysis_stats.rs b/crates/ra_cli/src/analysis_stats.rs index 2eaf784a6..a01c07c3f 100644 --- a/crates/ra_cli/src/analysis_stats.rs +++ b/crates/ra_cli/src/analysis_stats.rs | |||
@@ -6,9 +6,9 @@ use ra_syntax::AstNode; | |||
6 | 6 | ||
7 | use crate::Result; | 7 | use crate::Result; |
8 | 8 | ||
9 | pub fn run(verbose: bool, path: &Path, only: Option<&str>) -> Result<()> { | 9 | pub fn run(verbose: bool, memory_usage: bool, path: &Path, only: Option<&str>) -> Result<()> { |
10 | let db_load_time = Instant::now(); | 10 | let db_load_time = Instant::now(); |
11 | let (host, roots) = ra_batch::load_cargo(path)?; | 11 | let (mut host, roots) = ra_batch::load_cargo(path)?; |
12 | let db = host.raw_database(); | 12 | let db = host.raw_database(); |
13 | println!("Database loaded, {} roots, {:?}", roots.len(), db_load_time.elapsed()); | 13 | println!("Database loaded, {} roots, {:?}", roots.len(), db_load_time.elapsed()); |
14 | let analysis_time = Instant::now(); | 14 | let analysis_time = Instant::now(); |
@@ -113,5 +113,12 @@ pub fn run(verbose: bool, path: &Path, only: Option<&str>) -> Result<()> { | |||
113 | (num_exprs_partially_unknown * 100 / num_exprs) | 113 | (num_exprs_partially_unknown * 100 / num_exprs) |
114 | ); | 114 | ); |
115 | println!("Analysis: {:?}, {}", analysis_time.elapsed(), ra_prof::memory_usage()); | 115 | println!("Analysis: {:?}, {}", analysis_time.elapsed(), ra_prof::memory_usage()); |
116 | |||
117 | if memory_usage { | ||
118 | for (name, bytes) in host.per_query_memory_usage() { | ||
119 | println!("{:>8} {}", bytes, name) | ||
120 | } | ||
121 | } | ||
122 | |||
116 | Ok(()) | 123 | Ok(()) |
117 | } | 124 | } |
diff --git a/crates/ra_cli/src/main.rs b/crates/ra_cli/src/main.rs index 5adf8b096..d2f6544f8 100644 --- a/crates/ra_cli/src/main.rs +++ b/crates/ra_cli/src/main.rs | |||
@@ -24,6 +24,7 @@ fn main() -> Result<()> { | |||
24 | .subcommand( | 24 | .subcommand( |
25 | SubCommand::with_name("analysis-stats") | 25 | SubCommand::with_name("analysis-stats") |
26 | .arg(Arg::with_name("verbose").short("v").long("verbose")) | 26 | .arg(Arg::with_name("verbose").short("v").long("verbose")) |
27 | .arg(Arg::with_name("memory-usage").long("memory-usage")) | ||
27 | .arg(Arg::with_name("only").short("o").takes_value(true)) | 28 | .arg(Arg::with_name("only").short("o").takes_value(true)) |
28 | .arg(Arg::with_name("path")), | 29 | .arg(Arg::with_name("path")), |
29 | ) | 30 | ) |
@@ -71,9 +72,10 @@ fn main() -> Result<()> { | |||
71 | } | 72 | } |
72 | ("analysis-stats", Some(matches)) => { | 73 | ("analysis-stats", Some(matches)) => { |
73 | let verbose = matches.is_present("verbose"); | 74 | let verbose = matches.is_present("verbose"); |
75 | let memory_usage = matches.is_present("memory-usage"); | ||
74 | let path = matches.value_of("path").unwrap_or(""); | 76 | let path = matches.value_of("path").unwrap_or(""); |
75 | let only = matches.value_of("only"); | 77 | let only = matches.value_of("only"); |
76 | analysis_stats::run(verbose, path.as_ref(), only)?; | 78 | analysis_stats::run(verbose, memory_usage, path.as_ref(), only)?; |
77 | } | 79 | } |
78 | ("analysis-bench", Some(matches)) => { | 80 | ("analysis-bench", Some(matches)) => { |
79 | let verbose = matches.is_present("verbose"); | 81 | let verbose = matches.is_present("verbose"); |