Auto merge of #15461 - lnicola:analysis-stats-memory, r=Veykril
internal: Always collect memory usage info in analysis-stats
This commit is contained in:
commit
54c4125086
@ -10,13 +10,13 @@ pub struct StopWatch {
|
||||
time: Instant,
|
||||
#[cfg(target_os = "linux")]
|
||||
counter: Option<perf_event::Counter>,
|
||||
memory: Option<MemoryUsage>,
|
||||
memory: MemoryUsage,
|
||||
}
|
||||
|
||||
pub struct StopWatchSpan {
|
||||
pub time: Duration,
|
||||
pub instructions: Option<u64>,
|
||||
pub memory: Option<MemoryUsage>,
|
||||
pub memory: MemoryUsage,
|
||||
}
|
||||
|
||||
impl StopWatch {
|
||||
@ -45,20 +45,16 @@ pub fn start() -> StopWatch {
|
||||
None
|
||||
}
|
||||
};
|
||||
let memory = MemoryUsage::now();
|
||||
let time = Instant::now();
|
||||
StopWatch {
|
||||
time,
|
||||
#[cfg(target_os = "linux")]
|
||||
counter,
|
||||
memory: None,
|
||||
memory,
|
||||
}
|
||||
}
|
||||
pub fn memory(mut self, yes: bool) -> StopWatch {
|
||||
if yes {
|
||||
self.memory = Some(MemoryUsage::now());
|
||||
}
|
||||
self
|
||||
}
|
||||
|
||||
pub fn elapsed(&mut self) -> StopWatchSpan {
|
||||
let time = self.time.elapsed();
|
||||
|
||||
@ -69,7 +65,7 @@ pub fn elapsed(&mut self) -> StopWatchSpan {
|
||||
#[cfg(not(target_os = "linux"))]
|
||||
let instructions = None;
|
||||
|
||||
let memory = self.memory.map(|it| MemoryUsage::now() - it);
|
||||
let memory = MemoryUsage::now() - self.memory;
|
||||
StopWatchSpan { time, instructions, memory }
|
||||
}
|
||||
}
|
||||
@ -93,9 +89,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
}
|
||||
write!(f, ", {instructions}{prefix}instr")?;
|
||||
}
|
||||
if let Some(memory) = self.memory {
|
||||
write!(f, ", {memory}")?;
|
||||
}
|
||||
write!(f, ", {}", self.memory)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
@ -235,9 +235,7 @@ pub fn run(self, verbosity: Verbosity) -> anyhow::Result<()> {
|
||||
if let Some(instructions) = total_span.instructions {
|
||||
report_metric("total instructions", instructions, "#instr");
|
||||
}
|
||||
if let Some(memory) = total_span.memory {
|
||||
report_metric("total memory", memory.allocated.megabytes() as u64, "MB");
|
||||
}
|
||||
report_metric("total memory", total_span.memory.allocated.megabytes() as u64, "MB");
|
||||
|
||||
if env::var("RA_COUNT").is_ok() {
|
||||
eprintln!("{}", profile::countme::get_all());
|
||||
@ -257,7 +255,7 @@ pub fn run(self, verbosity: Verbosity) -> anyhow::Result<()> {
|
||||
eprintln!("source files: {total_file_size}, macro files: {total_macro_file_size}");
|
||||
}
|
||||
|
||||
if self.memory_usage && verbosity.is_verbose() {
|
||||
if verbosity.is_verbose() {
|
||||
print_memory_usage(host, vfs);
|
||||
}
|
||||
|
||||
@ -814,7 +812,7 @@ fn run_ide_things(&self, analysis: Analysis, mut file_ids: Vec<FileId>) {
|
||||
}
|
||||
|
||||
fn stop_watch(&self) -> StopWatch {
|
||||
StopWatch::start().memory(self.memory_usage)
|
||||
StopWatch::start()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -62,8 +62,6 @@
|
||||
optional --randomize
|
||||
/// Run type inference in parallel.
|
||||
optional --parallel
|
||||
/// Collect memory usage statistics.
|
||||
optional --memory-usage
|
||||
/// Print the total length of all source and macro files (whitespace is not counted).
|
||||
optional --source-stats
|
||||
|
||||
@ -191,7 +189,6 @@ pub struct AnalysisStats {
|
||||
pub output: Option<OutputFormat>,
|
||||
pub randomize: bool,
|
||||
pub parallel: bool,
|
||||
pub memory_usage: bool,
|
||||
pub source_stats: bool,
|
||||
pub only: Option<String>,
|
||||
pub with_deps: bool,
|
||||
|
@ -103,9 +103,7 @@ fn measure_analysis_stats_path(
|
||||
path: &str,
|
||||
) -> anyhow::Result<()> {
|
||||
eprintln!("\nMeasuring analysis-stats/{name}");
|
||||
let output =
|
||||
cmd!(sh, "./target/release/rust-analyzer -q analysis-stats --memory-usage {path}")
|
||||
.read()?;
|
||||
let output = cmd!(sh, "./target/release/rust-analyzer -q analysis-stats {path}").read()?;
|
||||
for (metric, value, unit) in parse_metrics(&output) {
|
||||
self.report(&format!("analysis-stats/{name}/{metric}"), value, unit.into());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user