daiyousei-qz added a comment. Yeah, makes sense. Thank you for your insight! I missed the fact that this time include AST build time.
I manually injected a time region into `inlayHints`, here's part of logs printed for scrolling "offsetToPosition" build: I[23:36:43.055] <-- textDocument/hover(21) I[23:36:43.057] --> reply:textDocument/hover(21) 1 ms I[23:36:43.057] --> textDocument/clangd.fileStatus I[23:36:44.422] <-- textDocument/inlayHint(22) E[23:36:44.612] ++++++ Inlay hints takes 189 ms to compute I[23:36:44.612] --> reply:textDocument/inlayHint(22) 189 ms I[23:36:44.612] --> textDocument/clangd.fileStatus I[23:36:44.875] <-- textDocument/inlayHint(23) E[23:36:45.053] ++++++ Inlay hints takes 178 ms to compute I[23:36:45.054] --> reply:textDocument/inlayHint(23) 179 ms I[23:36:45.054] --> textDocument/clangd.fileStatus I[23:36:45.686] <-- textDocument/inlayHint(24) E[23:36:45.865] ++++++ Inlay hints takes 178 ms to compute I[23:36:45.865] --> reply:textDocument/inlayHint(24) 179 ms I[23:36:45.865] --> textDocument/clangd.fileStatus And here's logs scrolling "sourceLocToPosition" + "lspLength": I[23:41:04.695] <-- textDocument/inlayHint(73) I[23:41:04.707] --> reply:textDocument/inlayHint(73) 12 ms I[23:41:04.707] --> textDocument/clangd.fileStatus I[23:41:04.793] <-- textDocument/inlayHint(74) I[23:41:04.807] --> reply:textDocument/inlayHint(74) 13 ms I[23:41:04.807] --> textDocument/clangd.fileStatus I[23:41:04.913] <-- textDocument/inlayHint(75) I[23:41:04.926] --> reply:textDocument/inlayHint(75) 12 ms I[23:41:04.926] --> textDocument/clangd.fileStatus I[23:41:05.407] <-- textDocument/inlayHint(76) I[23:41:05.420] --> reply:textDocument/inlayHint(76) 12 ms I[23:41:05.420] --> textDocument/clangd.fileStatus As this is more than 10x slower, I'm holding my position that we shouldn't use `offsetToPosition` for LSP features triggered per edit/scroll. 150ms is more than noticeable. If you want to repro on your side, replace computation of HintStart/HintEnd with the following code Position HintStart = offsetToPosition(MainFileBuf, RBraceOffset); Position HintEnd = offsetToPosition(MainFileBuf, RBraceOffset + HintRangeText.size()); Btw, it's always fascinating to see how modern computer system is so fast, and in the meantime still so "underpowered" :) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D150635/new/ https://reviews.llvm.org/D150635 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits