Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit a824b73

Browse files
committed
Report metric timings for file item trees and crate def map creation
1 parent 58ac823 commit a824b73

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

crates/rust-analyzer/src/cli/analysis_stats.rs

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,38 @@ impl flags::AnalysisStats {
9595
eprintln!(")");
9696

9797
let mut analysis_sw = self.stop_watch();
98-
let mut num_crates = 0;
99-
let mut visited_modules = FxHashSet::default();
100-
let mut visit_queue = Vec::new();
10198

10299
let mut krates = Crate::all(db);
103100
if self.randomize {
104101
shuffle(&mut rng, &mut krates);
105102
}
103+
104+
let mut item_tree_sw = self.stop_watch();
105+
let mut num_item_trees = 0;
106+
let source_roots =
107+
krates.iter().cloned().map(|krate| db.file_source_root(krate.root_file(db))).unique();
108+
for source_root_id in source_roots {
109+
let source_root = db.source_root(source_root_id);
110+
if !source_root.is_library || self.with_deps {
111+
for file_id in source_root.iter() {
112+
if let Some(p) = source_root.path_for_file(&file_id) {
113+
if let Some((_, Some("rs"))) = p.name_and_extension() {
114+
db.file_item_tree(file_id.into());
115+
num_item_trees += 1;
116+
}
117+
}
118+
}
119+
}
120+
}
121+
eprintln!(" item trees: {num_item_trees}");
122+
let item_tree_time = item_tree_sw.elapsed();
123+
eprintln!("{:<20} {}", "Item Tree Collection:", item_tree_time);
124+
report_metric("item tree time", item_tree_time.time.as_millis() as u64, "ms");
125+
126+
let mut crate_def_map_sw = self.stop_watch();
127+
let mut num_crates = 0;
128+
let mut visited_modules = FxHashSet::default();
129+
let mut visit_queue = Vec::new();
106130
for krate in krates {
107131
let module = krate.root_module(db);
108132
let file_id = module.definition_source_file_id(db);
@@ -169,7 +193,9 @@ impl flags::AnalysisStats {
169193
visited_modules.len(),
170194
bodies.len()
171195
);
172-
eprintln!("{:<20} {}", "Item Collection:", analysis_sw.elapsed());
196+
let crate_def_map_time = crate_def_map_sw.elapsed();
197+
eprintln!("{:<20} {}", "Item Collection:", crate_def_map_time);
198+
report_metric("crate def map time", crate_def_map_time.time.as_millis() as u64, "ms");
173199

174200
if self.randomize {
175201
shuffle(&mut rng, &mut bodies);

0 commit comments

Comments
 (0)