-
-
Notifications
You must be signed in to change notification settings - Fork 496
Description
The following tooling is useful for diagnosing TypeScript performance issues in applications.
Reports of slow IDE experiences may not be directly due to Volar but underlying poor preforming hot code in applications. In our case we have a very large project and have always suffered performance issues. Volar doesn't seem to respond well; likely due to it now generating more typing for vue files.
I don't want to create yet another issue about bad performance with Volar; because it may not be due to Volar itself but underlying poor performance in application code.
The ability to use this tooling will help users (and ourselves) be able to triage performance issues before blaming the tooling; however the methods to triage performance issues do not work.
I've taken a look myself into why vue-tsc is not reporting on diagnostics; but i've not yet found any resolutions as to why this may be.
Extended Diagnostics
yarn vue-tsc --extendedDiagnostics
Files: 7102
...
Types: 80 <--
Instantiations: 0 <--
...
yarn tsc --extendedDiagnostics
Files: 3203
...
Types: 293160
Instantiations: 661562
...
As you can see with vue-tsc the extended diagnostics is reporting more files checked (which makes sense as this would be the vue files), but the types and instantiations are basically no longer being reported.
Trace Generation
yarn vue-tsc --generateTrace trace
/home/blake/work/attest-maker-fe/node_modules/typescript/lib/tsc.js:2099
throw e;
^
Error: Debug Failure. False expression.
This error appears because the trace information is empty; which is not expected. Which indicates tracing and diagnostic information is bailing out.
Removing the generated code for VLS, which causes diagnostic errors (we use TSX and vue 2 so it isn't required to be generated in our scenario). These errors are filtered out but I was curious if that caused bail out of counting and tracing type information. After removing all diagnostic errors from generated code it still fails; so this tells me that the issue is not directly related to the generated code.