📌

Visual Studio Codeの起動が遅いときに試すこと

2022/03/25に公開

Ryzen 9 5950X機なのにVisual Studio Codeの起動に2~3秒くらいかかっていて、僕のPCがこんなに遅いわけがないと調べまわったのでメモです。

起動が遅い原因を調べる

起動時間のプロファイルを見る

View > Command Palette...でDeveloper: Startup Performanceを開くと起動時間のプロファイルが表示されます。

下記はRyzen 9 5950X機で快適な状態に戻した時点でのパフォーマンスの数値の例です。何か突出してDurationの長い項目がある場合、項目名でぐぐると手がかりが得られるかもしれません。

## Performance Marks

| What                                                            | Duration | Process                   | Info                                                       |
| --------------------------------------------------------------- | -------- | ------------------------- | ---------------------------------------------------------- |
| start => app.isReady                                            | 48       | [main]                    | initial startup: true                                      |
| nls:start => nls:end                                            | 0        | [main]                    | initial startup: true                                      |
| require(main.bundle.js)                                         | 37       | [main]                    | initial startup: true                                      |
| start crash reporter                                            | 15       | [main]                    | initial startup: true                                      |
| serve main IPC handle                                           | 1        | [main]                    | initial startup: true                                      |
| create window                                                   | 20       | [main]                    | initial startup: true, state: 0ms, widget: 19ms, show: 0ms |
| app.isReady => window.loadUrl()                                 | 91       | [main]                    | initial startup: true                                      |
| window.loadUrl() => begin to require(workbench.desktop.main.js) | 80       | [main->renderer]          | NewWindow                                                  |
| require(workbench.desktop.main.js)                              | 188      | [renderer]                | cached data: YES, node_modules took 0ms                    |
| wait for window config                                          | 0        | [renderer]                | -                                                          |
| init storage (global & workspace)                               | 7        | [renderer]                | -                                                          |
| init workspace service                                          | 20       | [renderer]                | -                                                          |
| register extensions & spawn extension host                      | 110      | [renderer]                | -                                                          |
| restore viewlet                                                 | 23       | [renderer]                | workbench.view.explorer                                    |
| restore panel                                                   | 15       | [renderer]                | terminal                                                   |
| restore & resolve visible editors                               | 36       | [renderer]                | 0:                                                         |
| overall workbench load                                          | 169      | [renderer]                | -                                                          |
| workbench ready                                                 | 600      | [main->renderer]          | -                                                          |
| renderer ready                                                  | 386      | [renderer]                | -                                                          |
| shared process connection ready                                 | 0        | [renderer->sharedprocess] | -                                                          |
| extensions registered                                           | 772      | [renderer]                | -                                                          |

遅い拡張を探す

Extensionsビューを開くと、起動に時間がかかった拡張について起動時間が表示されています。さらに、Developer: Startup Performanceを開くと拡張の有効化が完了したタイミング等の詳細が見られます。

起動が遅く普段使用しない拡張は無効化しておくとよさそうです。

起動が遅くなりそうな特定の要因

Microsoftアカウント認証

設定の同期にMicrosoftアカウントを使用すると、Developer: Startup Performanceでvscode.microsoft-authenticationのFinish Activateが845msくらいになっていました。設定の同期はGitHubアカウントで行うのがよさそう?

Nahimic Service

WindowsでASUSのマザーボードを使用している場合、Nahimic Serviceが起動時間に悪影響を及ぼすことがあるようです。タスクマネージャーのサービスでNahimic Serviceを停止すると、app.isReadyが600ms台から50ms台に下がりました。

Visual Studio Codeを初期化する

遅い原因がどうしても分からない場合、Visual Studio Codeを一度初期化してしまうのも手です。というか自分の場合は結局初期化しないと根本的に直りませんでした。当然ですが、設定を同期していないと全部吹っ飛ぶので注意。

Windowsでは設定ファイルやキャッシュが

C:\Users\{ユーザー名}\AppData\Roaming\Code

に、拡張が

C:\Users\{ユーザー名}\.vscode

に入っていますので、これらを削除すると初期化されます。

さらに速くする方法

もしあれば知りたいので何かあれば教えてください!

Discussion