diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-12-12 08:18:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-12 08:18:10 +0100 |
commit | 49a6daaa8386f321d23f57fb5f3ae365abf82a80 (patch) | |
tree | 4b5cbcb9c225d18fabe567dc0dcca8a8b5bbdb8f /cli/lsp/language_server.rs | |
parent | 8ea35de158834fc70453d37f23094ef327879e76 (diff) |
perf(lsp): collect counts and durations of all requests (#21540)
In addition to collecting details per-request metrics of the last 3000
request this commit adds aggregate metrics for all requests.
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 9b531cc40..2d3864e0a 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -3807,14 +3807,30 @@ impl Inner { .join("\n - ") ) .unwrap(); + contents - .push_str("\n## Performance\n\n|Name|Duration|Count|\n|---|---|---|\n"); + .push_str("\n## Performance (last 3 000 entries)\n\n|Name|Count|Duration|\n|---|---|---|\n"); let mut averages = self.performance.averages_as_f64(); averages.sort_by(|a, b| a.0.cmp(&b.0)); for (name, count, average_duration) in averages { - writeln!(contents, "|{}|{}ms|{}|", name, average_duration, count) + writeln!(contents, "|{}|{}|{}ms|", name, count, average_duration) .unwrap(); } + + contents.push_str( + "\n## Performance (total)\n\n|Name|Count|Duration|\n|---|---|---|\n", + ); + let mut measurements_by_type = self.performance.measurements_by_type(); + measurements_by_type.sort_by(|a, b| a.0.cmp(&b.0)); + for (name, total_count, total_duration) in measurements_by_type { + writeln!( + contents, + "|{}|{}|{:.3}ms|", + name, total_count, total_duration + ) + .unwrap(); + } + Some(contents) } else { let asset_or_doc = self.get_maybe_asset_or_document(&specifier); |