diff options
author | Aleksey Kladov <[email protected]> | 2020-02-06 13:55:10 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-02-06 13:55:10 +0000 |
commit | ec6fb8da7c7a5529e1db30c0a6f7e2cda6a75d19 (patch) | |
tree | 9619fde70cadd5bb3ba654527b4f22b5eebdd012 | |
parent | ea9d18ba836a7228f7310e1bc77c0918f0191a42 (diff) |
Add profiling around add_impl_members
This intention is pretty slow for `impl Interator`, because it has a
ton of default methods which need to be substituted.
The proper fix here is to not compute the actual edit until the user
triggers the action, but that's awkward to do in the LSP right now, so
let's just put a profiling code for now.
-rw-r--r-- | Cargo.lock | 1 | ||||
-rw-r--r-- | crates/ra_assists/Cargo.toml | 1 | ||||
-rw-r--r-- | crates/ra_assists/src/assists/add_missing_impl_members.rs | 1 |
3 files changed, 3 insertions, 0 deletions
diff --git a/Cargo.lock b/Cargo.lock index 1aa121030..f39cd01c3 100644 --- a/Cargo.lock +++ b/Cargo.lock | |||
@@ -963,6 +963,7 @@ dependencies = [ | |||
963 | "ra_db", | 963 | "ra_db", |
964 | "ra_fmt", | 964 | "ra_fmt", |
965 | "ra_hir", | 965 | "ra_hir", |
966 | "ra_prof", | ||
966 | "ra_syntax", | 967 | "ra_syntax", |
967 | "ra_text_edit", | 968 | "ra_text_edit", |
968 | "rustc-hash", | 969 | "rustc-hash", |
diff --git a/crates/ra_assists/Cargo.toml b/crates/ra_assists/Cargo.toml index 0d2109e4e..9d3091b91 100644 --- a/crates/ra_assists/Cargo.toml +++ b/crates/ra_assists/Cargo.toml | |||
@@ -16,6 +16,7 @@ either = "1.5" | |||
16 | ra_syntax = { path = "../ra_syntax" } | 16 | ra_syntax = { path = "../ra_syntax" } |
17 | ra_text_edit = { path = "../ra_text_edit" } | 17 | ra_text_edit = { path = "../ra_text_edit" } |
18 | ra_fmt = { path = "../ra_fmt" } | 18 | ra_fmt = { path = "../ra_fmt" } |
19 | ra_prof = { path = "../ra_prof" } | ||
19 | ra_db = { path = "../ra_db" } | 20 | ra_db = { path = "../ra_db" } |
20 | hir = { path = "../ra_hir", package = "ra_hir" } | 21 | hir = { path = "../ra_hir", package = "ra_hir" } |
21 | test_utils = { path = "../test_utils" } | 22 | test_utils = { path = "../test_utils" } |
diff --git a/crates/ra_assists/src/assists/add_missing_impl_members.rs b/crates/ra_assists/src/assists/add_missing_impl_members.rs index 5bb937bde..e4c22ad55 100644 --- a/crates/ra_assists/src/assists/add_missing_impl_members.rs +++ b/crates/ra_assists/src/assists/add_missing_impl_members.rs | |||
@@ -99,6 +99,7 @@ fn add_missing_impl_members_inner( | |||
99 | assist_id: &'static str, | 99 | assist_id: &'static str, |
100 | label: &'static str, | 100 | label: &'static str, |
101 | ) -> Option<Assist> { | 101 | ) -> Option<Assist> { |
102 | let _p = ra_prof::profile("add_missing_impl_members_inner"); | ||
102 | let impl_node = ctx.find_node_at_offset::<ast::ImplBlock>()?; | 103 | let impl_node = ctx.find_node_at_offset::<ast::ImplBlock>()?; |
103 | let impl_item_list = impl_node.item_list()?; | 104 | let impl_item_list = impl_node.item_list()?; |
104 | 105 | ||