Split infer query into two for better profiling

This is the same change as we did with `crate_def_map` and it does seem
that we mostly spend time in salsa, without recomputing much on
rust-analyzer side.

Example output:

```
 233ms - handle_inlay_hints
      163ms - get_inlay_hints
          163ms - SourceAnalyzer::new
               67ms - def_with_body_from_child_node
                   67ms - analyze_container
                       67ms - analyze_container
                           67ms - Module::from_definition
                               67ms - Module::from_file
                                   67ms - crate_def_map
                                        0ms - parse_macro_query (6 calls)
                                        0ms - raw_items_query (1 calls)
                                       66ms - ???
                            0ms - crate_def_map (1 calls)
                        0ms - crate_def_map (1 calls)
               96ms - infer
                    2ms - trait_solve_query (2 calls)
                   94ms - ???
                0ms - body_with_source_map_query (1 calls)
                0ms - crate_def_map (1 calls)
      [...]
```

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
This commit is contained in:
Michal Terepeta 2020-01-03 17:02:08 +01:00
parent 15d94cbffc
commit d6c2a59538
5 changed files with 19 additions and 10 deletions

View file

@ -273,7 +273,7 @@ impl RootDatabase {
self.query(hir::db::BodyWithSourceMapQuery).sweep(sweep);
self.query(hir::db::ExprScopesQuery).sweep(sweep);
self.query(hir::db::InferQuery).sweep(sweep);
self.query(hir::db::DoInferQuery).sweep(sweep);
self.query(hir::db::BodyQuery).sweep(sweep);
}
@ -320,7 +320,7 @@ impl RootDatabase {
hir::db::LangItemQuery
hir::db::DocumentationQuery
hir::db::ExprScopesQuery
hir::db::InferQuery
hir::db::DoInferQuery
hir::db::TyQuery
hir::db::ValueTyQuery
hir::db::FieldTypesQuery