CLion 2020.1ヘルプ

パフォーマンスチューニングのヒント

この記事では、大規模プロジェクトでCLionのパフォーマンスを向上させるために使用できる有用な手法の概要を説明します。

メモリヒープを増やす

メモリインジケーターを有効にする

  • ステータスバーの右下隅にある2つのインジケーター(一般的なメモリインジケーターとClangdのメモリ使用状況インジケーター)を監視することで、パフォーマンスの低下がヒープメモリの不足によるものかどうかを確認できます。

    memory indicators

    両方のインジケーターは、右クリックで利用できるステータスバーメニューからオン/オフに切り替えることができます。

    Status bar widgets switcher

メモリ設定の変更ダイアログでヒープを増やす

  1. メインメニューからヘルプ | メモリー設定を変更するを選択します。

  2. 開いたダイアログで、最大ヒープ・サイズフィールドにより高いメモリヒープ値を設定します。

  3. 保存して再起動をクリックします。

Toolboxからメモリヒープを増やす

Toolboxアプリからヒープサイズを変更することもできます。

  1. Toolboxで、CLionバージョンを選択し、右側のねじナットボタンをクリックします。

  2. 開いたメニューから設定を選択します。

    CLion settings in Toolbox

  3. 構成セクションに移動し、最大ヒープ・サイズフィールドに新しい値を設定します。

    Change heap size from Toolbox

  4. CLionを再起動してください。

-Xmxを調整する

メモリヒープを増やす別のオプションは、対応するJVMオプション -Xmxを変更することです。

  1. ヘルプ | カスタム VM オプションの編集に移動します。このアクションにより、IDEの構成ディレクトリに .vmoptions ファイルのコピーが作成され、エディターで開きます。

  2. -Xmx をより高い値に設定します。例:デフォルトの2 GBではなく、4 GBの値の -Xmx4096m

  3. CLionを再起動してください。

CLionは、空きヒープメモリの量が最大ヒープサイズの5%未満の場合も警告します。

low memory warning message

構成をクリックして、メモリー設定ダイアログで -Xmx を編集します。

change Xmx in Memory Settings

コード分析をスピードアップ

インスペクションのリストをフィルタリングする

オンザフライのコード分析は、CLionで最もパフォーマンスを消費するプロセスの1つです。軽量化するには、設定/環境設定 | エディター | インスペクションのインスペクションのリストを短くします(インスペクションを無効化および抑止する他の方法を参照してください)。

特に、データ・フロー分析グループと一般 | 簡略化可能なステートメント インスペクションを無効にすることを検討してください。

disable performance-consuming inspections

コード | コードのインスペクションコマンドを使用してオンデマンドでインスペクションを常に実行し、エディターに影響を与えることなく、別のツールウィンドウで結果を調べることができます。また、コミットする前にオプションを設定することにより、コミットするまでコード分析(およびオンザフライのリファクタリング)を延期できます。

ファイルの分析を調整する

現在開いているファイルのコード分析のレベルを変更するには、ステータスバーのHectorアイコン the Hector icon をクリックするか、コード | 現在のファイルの分析を構成 Ctrl+Alt+Shift+Hを実行します。

Hector the Inspector popup

スライダーを使用可能な位置のいずれかに移動します。

  • なし : ハイライトを完全にオフにする

  • 構文 : 構文問題のみを表示

  • インスペクション (デフォルト): 構文の課題とインスペクションの課題を表示する

省電力モードの切り替え

個別のチェックまたはファイルを1つずつ構成する代わりに、省電力モードを試してください。IDE全体のすべてのインスペクションおよびその他の非常に消費の多いバックグラウンドタスクを無効にします。

省電力モードを有効にするには、Hectorポップアップで対応するチェックボックスを設定するか(上のスクリーンショットを参照)、ファイル | 省電力モードを呼び出します。

Clangdベースのエンジンを確認する

CLionには、デフォルトで有効になっている補完的なClangdベースの言語エンジンが組み込まれています。現在、エラー/警告の注釈、特定のナビゲーションタスク、ClangFormatを使用したコードの書式設定、およびクイック修正によるコードの強調表示で機能します。

ほとんどの場合、Clangdベースのエンジンは組み込みのエンジンよりも高速に動作します(そして、より正確な結果を提供することもあります)。ただし、すべての操作に使用されるわけではありません。例:Clangdはクイックフィックスの場所を提供しますが、フィックス自体はCLionのエンジンによって実行されます。または、使用箇所の検索はClangdを使用して、エディターで現在開かれているファイルおよびCLionの独自のエンジンを検索し、他のすべての用途に使用します。

パフォーマンスの課題を調査するときは、Clangdエンジンの仕様を考慮することをお勧めします。設定/環境設定 | 言語 & フレームワーク | C/C++ | Clangdを使用して、エンジン設定を実験し、特定のタスクのパフォーマンスに影響するかどうかを確認します。

インデックス作成をスピードアップ

ディレクトリとファイルの種類を除外する

デフォルトでは、CLionは、正しい解決のために、CMakeLists.txt にリストされているすべてのディレクトリ(ソースと include_directories パス)にインデックスを付けます。一方、プロジェクトには、CLionコードインサイトに影響を与えないバイナリ、ログ、またはビルドアーティファクトを含むフォルダーが含まれている場合があります。また、一部のフォルダーのインデックス作成は、サイズまたは場所が原因で非常に高価になる場合があります。そのため、そのようなフォルダーを手動で除外することは合理的です。プロジェクトツリーでディレクトリを右クリックし、ディレクトリをマーク | 除外を選択します。

mark directory as excluded

CLionの除外ファイルのシンボルは未完成のままなので、そのようなファイルでは次の機能は使用できません:コード補完および自動インポート(除外ディレクトリが CMakeLists.txtinclude_directories でマークされている場合を除く)、コード生成、パスで検索(現在開いているファイルの範囲を除く)、ナビゲーション、およびリファクタリング。

ログや生成されたデータなどのファイルをインデックスから除外する別の方法は、設定/環境設定 | エディター | ファイル・タイプでファイルタイプ別に除外することです。

ignored files types

より小さなCMakeサブプロジェクトで作業する

解析されるファイルの範囲は、ロードされたCMakeスクリプトによって決定されます。プロジェクトが自己完結型の CMakeLists.txt を含む複数のサブディレクトリに分割されている場合、小さなサブプロジェクトを個別に読み込むことができます(このためには、sub-CMakeLists.txtでCMakeプロジェクトを読み込むを実行します)。

load CMake sub-projects

大きなプロジェクトの一部のみを探索する必要がある場合の別の方法は、compilation databaseを作成し、それを目的の部分に減らしてから、CLionでプロジェクトとして開くことです。

_CLION_IDE__マクロを使用して、重い解析を排除する

複雑なプリプロセッサマクロの解析中にIDEがフリーズすることがあります。このような問題のある定義をコードから除去するには、__CLION_IDE__ マクロを使用して、いくつかのダミーの定義に置き換えます。

CLion IDE macro

このマクロは解析のみに影響し、コードをビルドまたは実行するときは未定義です。

パフォーマンスの問題を報告する

IDEがフリーズするか、CPU /メモリの使用率が高くなり、上記のヒントが役に立たない場合は、IDEログ、スレッドダンプ、スナップショットを提供してください。取得および送信する方法の詳細については、この手順(英語)を参照してください。

最終更新日: 2020年6月11日

関連ページ:

インスペクションを有効/無効にしない

いくつかのインスペクションは現在見たくない問題を報告するかもしれません。この場合、無効にしたり抑制したりできます。インスペクションを無効にすると、オフになります。つまり、コード分析エンジンは、このインスペクションが検出するように設計されている問題について、プロジェクトファイルの検索を停止します。イン...

Clangd

macOSのClangdは、追加のC++言語エンジンとしてCLionで使用されます(C++規格準拠を参照)。このダイアログを使用してClangdサーバー全体を有効/無効にし、特定の設定を構成します。clangdサーバーを有効にするこのオプションはClangdエンジン全体を有効/無効にします。このチェ...

代替フォーマッタとしてのClangFormat

ClangFormatは、チームメンバーとIDE間で共通のコードスタイルを維持するのに役立つ一般的なコードフォーマットツールです。それは.clang-formatまたは_clang-formatという名前の特別なYAMLファイルにフォーマット設定を保存するオプションを提供します。CLionでは、組み...

Compilation Database

CMakeやGradle以外のプロジェクトでも、CLionが提供する高度なIDE機能の恩恵を受けることができます。1つの方法は、非CMakeプロジェクトをインポートしてCLionにそれを単純なCMake構造に変換させることです。もう1つの選択肢は、compilation databaseを読み込んで...

認識されているファイルの種類

CLionによって認識されるファイルの種類の一覧を表示するには、にアクセスしてください。プロジェクト内のファイルにアイコンが付いている場合は、CLionがそれを認識できなかったことを意味します。この場合、新しいファイルタイプを登録することができます。ActionScriptファイルアーカイブ・ファイ...