From 49a6daaa8386f321d23f57fb5f3ae365abf82a80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Tue, 12 Dec 2023 08:18:10 +0100 Subject: 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. --- cli/lsp/language_server.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'cli/lsp/language_server.rs') 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); -- cgit v1.2.3