@@ -95,17 +95,41 @@ impl flags::AnalysisStats {
95
95
eprintln ! ( ")" ) ;
96
96
97
97
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 ( ) ;
101
98
102
99
let mut krates = Crate :: all ( db) ;
103
100
if self . randomize {
104
101
shuffle ( & mut rng, & mut krates) ;
105
102
}
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 ( ) ;
106
130
for krate in krates {
107
131
let module = krate. root_module ( db) ;
108
- let file_id = module. definition_source ( db) . file_id ;
132
+ let file_id = module. definition_source_file_id ( db) ;
109
133
let file_id = file_id. original_file ( db) ;
110
134
let source_root = db. file_source_root ( file_id) ;
111
135
let source_root = db. source_root ( source_root) ;
@@ -171,7 +195,9 @@ impl flags::AnalysisStats {
171
195
adts. len( ) ,
172
196
consts. len( ) ,
173
197
) ;
174
- eprintln ! ( "{:<20} {}" , "Item Collection:" , analysis_sw. elapsed( ) ) ;
198
+ let crate_def_map_time = crate_def_map_sw. elapsed ( ) ;
199
+ eprintln ! ( "{:<20} {}" , "Item Collection:" , crate_def_map_time) ;
200
+ report_metric ( "crate def map time" , crate_def_map_time. time . as_millis ( ) as u64 , "ms" ) ;
175
201
176
202
if self . randomize {
177
203
shuffle ( & mut rng, & mut bodies) ;
0 commit comments