Move print_memory_usage to cli.rs

This commit is contained in:
Jonas Schievink 2020-12-11 18:24:27 +01:00
parent c007ac3830
commit 2fdde98b5c
4 changed files with 26 additions and 32 deletions

View File

@ -10,8 +10,9 @@ mod ssr;
use std::io::Read; use std::io::Read;
use anyhow::Result; use anyhow::Result;
use ide::Analysis; use ide::{Analysis, AnalysisHost};
use syntax::{AstNode, SourceFile}; use syntax::{AstNode, SourceFile};
use vfs::Vfs;
pub use self::{ pub use self::{
analysis_bench::{BenchCmd, BenchWhat, Position}, analysis_bench::{BenchCmd, BenchWhat, Position},
@ -82,3 +83,23 @@ fn report_metric(metric: &str, value: u64, unit: &str) {
} }
println!("METRIC:{}:{}:{}", metric, value, unit) println!("METRIC:{}:{}:{}", metric, value, unit)
} }
fn print_memory_usage(mut host: AnalysisHost, vfs: Vfs) {
let mut mem = host.per_query_memory_usage();
let before = profile::memory_usage();
drop(vfs);
let vfs = before.allocated - profile::memory_usage().allocated;
mem.push(("VFS".into(), vfs));
let before = profile::memory_usage();
drop(host);
mem.push(("Unaccounted".into(), before.allocated - profile::memory_usage().allocated));
mem.push(("Remaining".into(), profile::memory_usage().allocated));
for (name, bytes) in mem {
// NOTE: Not a debug print, so avoid going through the `eprintln` defined above.
eprintln!("{:>8} {}", bytes, name);
}
}

View File

@ -12,10 +12,7 @@ use ide_db::base_db::{
}; };
use vfs::AbsPathBuf; use vfs::AbsPathBuf;
use crate::{ use crate::cli::{load_cargo::load_cargo, print_memory_usage, Verbosity};
cli::{load_cargo::load_cargo, Verbosity},
print_memory_usage,
};
pub struct BenchCmd { pub struct BenchCmd {
pub path: PathBuf, pub path: PathBuf,

View File

@ -23,11 +23,9 @@ use rustc_hash::FxHashSet;
use stdx::format_to; use stdx::format_to;
use syntax::AstNode; use syntax::AstNode;
use crate::{ use crate::cli::{
cli::{ load_cargo::load_cargo, print_memory_usage, progress_report::ProgressReport, report_metric,
load_cargo::load_cargo, progress_report::ProgressReport, report_metric, Result, Verbosity, Result, Verbosity,
},
print_memory_usage,
}; };
use profile::StopWatch; use profile::StopWatch;

View File

@ -37,10 +37,8 @@ mod document;
pub mod lsp_ext; pub mod lsp_ext;
pub mod config; pub mod config;
use ide::AnalysisHost;
use serde::de::DeserializeOwned; use serde::de::DeserializeOwned;
use std::fmt; use std::fmt;
use vfs::Vfs;
pub use crate::{caps::server_capabilities, main_loop::main_loop}; pub use crate::{caps::server_capabilities, main_loop::main_loop};
@ -72,23 +70,3 @@ impl fmt::Display for LspError {
} }
impl std::error::Error for LspError {} impl std::error::Error for LspError {}
fn print_memory_usage(mut host: AnalysisHost, vfs: Vfs) {
let mut mem = host.per_query_memory_usage();
let before = profile::memory_usage();
drop(vfs);
let vfs = before.allocated - profile::memory_usage().allocated;
mem.push(("VFS".into(), vfs));
let before = profile::memory_usage();
drop(host);
mem.push(("Unaccounted".into(), before.allocated - profile::memory_usage().allocated));
mem.push(("Remaining".into(), profile::memory_usage().allocated));
for (name, bytes) in mem {
// NOTE: Not a debug print, so avoid going through the `eprintln` defined above.
std::eprintln!("{:>8} {}", bytes, name);
}
}