1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-25 15:29:32 -05:00

perf(lsp): add performance marks for TSC requests (#21383)

This should help us get a better picture where most of the time is spent
(the TSC or the surrounding Rust code).
This commit is contained in:
Bartek Iwańczuk 2023-11-29 22:18:23 +01:00 committed by GitHub
parent ae327d0a83
commit 6718be87c8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 3 deletions

View file

@ -208,6 +208,7 @@ fn normalize_diagnostic(
#[derive(Clone, Debug)]
pub struct TsServer {
performance: Arc<Performance>,
sender: mpsc::UnboundedSender<Request>,
specifier_map: Arc<TscSpecifierMap>,
}
@ -217,8 +218,9 @@ impl TsServer {
let specifier_map = Arc::new(TscSpecifierMap::new());
let specifier_map_ = specifier_map.clone();
let (tx, mut rx) = mpsc::unbounded_channel::<Request>();
let perf = performance.clone();
let _join_handle = thread::spawn(move || {
let mut ts_runtime = js_runtime(performance, cache, specifier_map_);
let mut ts_runtime = js_runtime(perf, cache, specifier_map_);
let runtime = create_basic_runtime();
runtime.block_on(async {
@ -238,6 +240,7 @@ impl TsServer {
});
Self {
performance,
sender: tx,
specifier_map,
}
@ -946,9 +949,14 @@ impl TsServer {
where
R: de::DeserializeOwned,
{
self
let mark = self
.performance
.mark(format!("tsc {}", req.method), None::<()>);
let r = self
.request_with_cancellation(snapshot, req, Default::default())
.await
.await;
self.performance.measure(mark);
r
}
async fn request_with_cancellation<R>(

View file

@ -8309,6 +8309,10 @@ fn lsp_performance() {
"op_load",
"request",
"testing_update",
"tsc $configure",
"tsc $getAssets",
"tsc $getSupportedCodeFixes",
"tsc getQuickInfoAtPosition",
"update_cache",
"update_diagnostics_deps",
"update_diagnostics_lint",