Visual Studio のパフォーマンスのヒントとテクニック
Visual Studio のパフォーマンスの推奨事項は、まれなケースで発生する可能性があるメモリ不足の状況を想定したものです。 これらの状況では、使っていない可能性がある特定の Visual Studio の機能を最適化できます。 以下のヒントは一般的な推奨事項を意図したものではありません。
注意
メモリの問題で製品の使用が困難な場合は、フィードバック ツールを使ってお知らせください。
64 ビット OS を使用する
システムを Windows の 32 ビット版から 64 ビット版にアップグレードすると、Visual Studio が使用できる仮想メモリの量が 2 GB から 4 GB に増えます。 64 ビット オペレーティング システムのアップグレードを使うと、Visual Studio でより大きなワークロードを処理できます。
詳しくは、「Windows リリースと Windows Server リリースのメモリの上限」をご覧ください。
ヒント
Windows 上の Visual Studio 2022 は、64 ビット アプリケーションです。 以前のバージョンは 32 ビットです。
自動ファイル復元を無効にする
Visual Studio では、前のセッションで開いたままのドキュメントが自動的に再度開かれます。 この自動ファイル復元アクションにより、プロジェクトの種類と開かれているドキュメントによっては、ソリューションの読み込みにかかる時間が最大で 30% 以上長くなる場合があります。 Windows フォームや XAML などのデザイナー、および一部の JavaScript ファイルや TypeScript ファイルでは、開くのに時間がかかる場合があります。
Visual Studio では、自動ドキュメント復元により、ソリューションの読み込み速度が低下する場合、黄色のバーでユーザーに通知します。 次の手順に従って、ファイルが自動的に再度開かれないようにすることができます。
[ツール]>[オプション] の順に選択して、 [オプション] ダイアログ ボックスを開きます。
[プロジェクトおよびソリューション]>[全般] ページで、 [Reopen documents on solution load](ソリューションの読み込み時にドキュメントを再度開く) の選択を解除します。
自動ファイル復元を無効にした場合、[移動] コマンドのいずれかを使用することで、開くファイルにすばやく移動できます。
一般的な [移動] 機能の場合は、 [編集]>[移動]>[すべてに移動] の順に選択するか、Ctrl+T キーを押します。
[編集]>[移動]>[最後の編集の場所へ移動] を使用するか、Ctrl+Shift+Backspace キーを押すことで、ソリューション内の最後の編集の場所に移動することができます。
ソリューション内の最近アクセスしたファイルの一覧を表示するには、 [最近使ったファイルに移動] を使用します。 [編集]>[移動]>[最近使ったファイルに移動] の順に選択するか、Ctrl+1 キー、Ctrl+R キーを押します。
デバッグ オプションを構成する
一般にデバッグ セッション中は少ないメモリで実行している場合は、1 つまたは複数の構成を変更することでパフォーマンスを最適化できます。
マイ コードのみを有効にする
最も簡単な最適化は、マイ コードのみ機能を有効にすることです。この機能は、ユーザーのプロジェクトのシンボルのみを読み込みます。 この機能を有効にすると、マネージド アプリケーション (.NET) のデバッグ用に大量のメモリを節約できます。 一部のプロジェクトの種類では、このオプションは既定で既に有効になっています。
マイ コードのみを有効にするには、 [ツール]>[オプション]>[デバッグ]>[全般] の順に選択し、 [マイ コードのみを有効にする] をオンにします。
読み込むシンボルを指定する
ネイティブ デバッグでは、シンボル ファイル ( .pdb) の読み込みには多くのメモリ リソースが必要です。 デバッガーのシンボル設定を構成することで、メモリを節約できます。 通常は、ユーザーのプロジェクトからのみモジュールを読み込むようにソリューションを構成します。
シンボルの読み込みを指定するには、 [ツール]>[オプション]>[デバッグ]>[シンボル] の順に選びます。
オプションを [すべてのモジュールの読み込み] ではなく [指定したモジュールの読み込みのみ] に設定した後、読み込むモジュールを指定します。 デバッグ中に、 [モジュール] ウィンドウで特定のモジュールを右クリックして、シンボルの読み込みにモジュールを明示的に含めることもできます (デバッグ中にウィンドウを開くには、 [デバッグ]>[Windows]>[モジュール] の順に選択します)。
詳しくは、デバッガーでのシンボル ファイルとソース ファイルの指定に関する記事をご覧ください。
診断ツールを無効にする
CPU プロファイルは使った後で無効にすることをお勧めします。 この機能は大量のリソースを使う場合があります。 CPU プロファイルを有効にすると、後続のデバッグ セッションを通してその状態が維持されるので、終了したら明示的にオフにする必要があります。 診断ツールで提供される機能が必要ない場合は、デバッグ中に診断ツールを無効にすることで、リソースを節約できる場合があります。
診断ツールを無効にするには、デバッグ セッションを開始し、 [ツール]>[オプション]>[デバッグ]>[全般] の順に選択した後、 [デバッグ中に診断ツールを有効にする] オプションをオフにします。
詳しくは、プロファイル ツールに関する記事をご覧ください。
ツールと拡張機能を無効にする
一部のツールや拡張機能を無効にすることで、パフォーマンスを向上させることができます。
ヒント
多くの場合、一度に 1 つの拡張機能を無効にしてパフォーマンスを再確認することで、パフォーマンスの問題を分離できます。
マネージド言語サービス (Roslyn)
.NET Compiler Platform ("Roslyn") のパフォーマンスに関する考慮事項については、「Performance considerations for large solutions」 (大きいソリューションでのパフォーマンスの考慮事項) をご覧ください。
CodeLens を無効にする
Visual Studio は、表示される各メソッドに対してすべての参照を検索タスクを実行します。 CodeLens は、参照数のインライン表示などの機能を提供します。 処理は、ServiceHub.RoslynCodeAnalysisService32 などの別のプロセスで実行されます。 大規模なソリューション、またはリソースに制約があるシステムでは、この機能はパフォーマンスに大きく影響する可能性があります。 メモリの問題が発生する場合 (たとえば、4 GB のコンピューターで大規模なソリューションを読み込むとき)、またはこのプロセスの CPU 使用率が高い場合は、CodeLens を無効にしてリソースを解放できます。
CodeLens を無効にするには、 [ツール]>[オプション]>[テキスト エディター]>[すべての言語]>[CodeLens] の順に選択し、この機能をオフにします。
詳しくは、「CodeLens によるコード変更とその他の履歴の検索」をご覧ください。
他のツールと拡張機能
拡張機能を無効にする
拡張機能は Visual Studio に追加された追加ソフトウェア コンポーネントであり、新しい機能を提供したり、既存の機能を拡張したりします。 拡張機能がメモリ リソースの問題の原因になることがよくあります。 メモリ リソースの問題が発生する場合は、一度に 1 つの拡張機能を無効にして、シナリオまたはワークフローに与える影響を確認します。
拡張機能を無効にするには、[拡張機能]>[拡張機能の管理] の順に選び、特定の拡張機能を無効にします。
マップ モードの無効化
"マップ モード" では、コード行がスクロール バーに縮小表示されます。 マップ モードは既定で有効になっています。
マップ モードを無効にするには、 [ツール] 、 [オプション] 、 [テキスト エディター] 、 [すべての言語] 、 [スクロール バー] の順に進み、 [ビヘイビアー] セクションで [垂直スクロール バーでのマップ モードの使用] オプションの選択を解除します。
右端での折り返しの無効化
"右端で折り返す" では、長いコード行のうち、コード エディター ウィンドウの現在の幅からはみ出す部分が表示されます。 [右端で折り返す] は既定でオンです。
現在作業中のプロジェクトで右端の折り返しを無効にするには、[編集]>[詳細]>[右端での折り返し] に移動します。 (同じメニュー コマンドを使用し、この設定を切り替えることができます。)
すべてのプロジェクトの右端折り返しを無効にするには、 [ツール] 、 [オプション] 、 [全般] 、 [テキスト エディター] 、 [すべての言語] 、 [全般] の順に進み、 [設定] セクションで [右端で折り返す] オプションの選択を解除します。
XAML デザイナーを無効にする
XAML デザイナーは既定で有効にされますが、 .xaml ファイルを開いた場合にのみリソースを消費します。 XAML ファイルを使う場合でも、デザイナー機能が必要ないときは、この機能を無効にして、若干のメモリを解放できます。
XAML デザイナーを無効にするには、 [ツール] 、 [オプション] 、 [XAML デザイナー] 、 [XAML デザイナーを有効にする] の順に選択し、オプションをオフにします。
ワークロードを削除する
Visual Studio インストーラーを使って、使われなくなったワークロードを削除できます。 このようにすると、不要になったパッケージとアセンブリをスキップして、起動時および実行時のコストを合理化できます。
追跡対象でないファイルをローカルの .gitignore に追加する
Visual Studio では、リポジトリに新しいファイルを追加する際にシームレスなエクスペリエンスを提供するために、追跡対象でないファイルを使用して Git コマンド
git status
が実行されます。 追跡対象でないファイルが多数ある場合は、git status
によって追加のメモリが消費される可能性があります。 これらのファイルを無視してgit status
のパフォーマンスを向上させるには、これらのファイルまたはフォルダーをローカルの .gitignore ファイルに追加します。 このファイルにアクセスするには、 [Git]>[設定]>[Git リポジトリ設定] に移動します。 次に、[Git files] (Git ファイル) セクションで、[追加] を選んで .gitignore ファイルを作成します。既にある場合は [編集] を選びます。Git ツールでコミット グラフを有効にする
Visual Studio 2022 バージョン 17.2 の新機能: Visual Studio で Git リポジトリまたはブランチ履歴を表示するときに遅延が発生している場合に役立つ、"コミット グラフ" 機能が統合されています。 コミット グラフを使用するには、Visual Studio 2022 をダウンロードしてインストールしてください。 コミット グラフの詳細については、Visual Studio での Git エクスペリエンスの強化に関するブログ記事を参照してください。
ガベージ コレクションを強制する
CLR では、ガベージ コレクションのメモリ管理システムが使われます。 このシステムでは、不要になったオブジェクトによってメモリが使われることがあります。 この状態は一時的なものです。ガベージ コレクターは、そのパフォーマンスとリソース使用のヒューリスティックに基づいて、このメモリを解放します。 Visual Studio のホット キーを使って、CLR に未使用のメモリを強制的に回収させることができます。 膨大な量のガベージが収集を待っている場合に、ガベージ コレクションを強制すると、タスク マネージャーで devenv.exe プロセスのメモリ使用量が低下するはずです。 この方法を使う必要はほとんどありません。 ただし、コストのかかる操作 (フル ビルド、デバッグ セッション、ソリューション オープン イベントなど) が完了した後は、プロセスによって実際に使われていたメモリの量を確認するのに役立ちます。 Visual Studio にはマネージドとネイティブが混在しているので、ネイティブ アロケーターとガベージ コレクターの間での限られたメモリ リソースの競合が発生する可能性があります。 大量のメモリが使われている状況では、ガベージ コレクターを強制的に実行すると役に立つことがあります。
ガベージ コレクションを強制的に行うには、キーボード ショートカット Ctrl+Alt+Shift+F12 キー、Ctrl+Alt+Shift+F12 キー (2 回押します) を使います。
ガベージ コレクションを強制するとシナリオが確実に動くようになる場合、この動作はバグである可能性があるので、Visual Studio のフィードバック ツールを使って報告してください。
CLR ガベージ コレクターについては、「ガベージ コレクションの基礎」をご覧ください。