Profiling the analysis server hosted by VS Code
The steps below show how to use the DevTools CPU profiler against the instance of the analysis server being hosted by VS Code. This allows profiling a short window of operations (such as typing in the editor or invoking code completion).
- Open a project in VS Code that can be used to trigger the bad performance
- Run the Preferences: Open Workspace Settings (JSON) command from the command palette (
F1
) or open the .vscode/settings.json
file - Add
"dart.analyzerVmServicePort": 8855
(the exact port number is not important but you'll need it further down) - Save the settings file
- A toast notification should appear in the bottom right warning you that the analysis server's VM Service is enabled. This is a reminder that you should remove the
dart.analyzerVmServicePort
setting when you are done. - Wait for initial analysis to complete (No “Analyzing...” or spinners in the status bar)
- Open a file and find a location where you can reproduce the bad performance
- Run the Dart: Open DevTools in Browser command from the palette (
F1
) - In DevTools, enter
http://localhost:8855/
(using the port number from above) and click Connect - Navigate to the CPU Profiler tab
- Click Enable Profiler
- In the isolate selector (bottom middle of the page), select the Isolate named main
- Click the Start recording button
- Switch back to VS Code and perform the actions that cause bad performance
- Back in DevTools, click the Stop recording button in the CPU Profiler
Profiling information should be displayed automatically and can be exported using the export button on the top right corner. Exported information may contain paths and class/member names from your project.
When you are done, don't forget to remove the VM Service port from your workspace settings:
- Run the Preferences: Open Workspace Settings (JSON) command from the command palette (
F1
) or open the .vscode/settings.json
file - Remove the
"dart.analyzerVmServicePort": 8855
setting - Save the settings file