関数実行のプロファイル
Valgrind のツール・スイートの Callgrind ツールを使用すると、関数の実行に関連する問題を検出できます。Callgrind によって生成されたデータ・ファイルをKCachegrindプロファイル・データ可視化ツールにロードして、パフォーマンス結果を参照します。
Valgrind ツールと KCachegrind をダウンロードしてインストールした後、Qt Creator から Callgrind と KCachegrind を使用できます。
注: Callgrind と KCachegrind は、Linux 上でローカルにインストールして実行できます。Callgrind は、どのコンピュータからでも、リモートの Linux マシンまたはデバイスで実行できます。
プロファイリング用アプリの構築
Callgrind は、アプリケーションの実行時に実行される関数の呼び出し履歴を記録します。実行された命令の数、ソース行との関係、関数間の呼び出し元と呼び出し先の関係、そのような呼び出しの回数を収集します。また、キャッシュ・シミュレーションや分岐予測を使用して、アプリケーションの実行時 動作に関する情報を収集することもできます。
デバッグビルド構成とリリースビルド構成のランタイム特性は大きく異なるため、一方の ビルド構成に関する分析結果は、もう一方のビルド構成には関連しないかもしれません。デバッグビルドをプロファイリングすると、多くの場合、コンテナの実装のような低レベルのコードに費やされ ている時間の主要な部分が見つかりますが、同じアプリケーションのリリースビルドのプロファイルでは、インライニン グやその他の最適化が一般的に行われているため、同じコードは表示されません。
最近の多くのコンパイラでは、最適化されたアプリケーションをビルドするときに、デバッグ情報を同時に表示することができます。たとえば、GCCの典型的なオプションは次のとおりです:-g -O2.Callgrind プロファイリングには、このようなセットアップを使用することをお勧めします。
データの収集
アプリケーションを分析します:
- Projects モードに移動し、リリース・ビルド構成を選択します。
- モード・セレクタで、Debug >Callgrind を選択します。

を選択してアプリケーションを起動します。- アプリケーションを使用して分析する。
- Functions のビューで分析結果を表示するには、
を選択します。
を選択すると、イベント・ロギングを一時停止して、プロファイリング中のプログラム実行を高速化できます。ロギングを一時停止している間は、イベントはカウントされません。
すべてのイベント・カウンターをリセットするには、
を選択します。
収集したデータをすべて破棄するには、
を選択します。
を選択して、KCachegrind でデータを表示します。Qt Creator KCachegrind を起動し、データをロードして可視化します。
収集したデータの表示
分析結果は、Callgrind のビューに表示されます。ビューを切り離して移動することができます。変更を元に戻すには、Views >Reset to Default Layout を選択します。
Views を選択して、ビューおよびビュータイトルの表示/非表示を切り替えます。Visualization ビューはデフォルトで非表示になっています。
を選択すると、表示されているデータが更新されます。
データを収集する代わりに、
を選択して外部ログファイ ルをCallgrind ビューに読み込むことができます。

Filter フィールドに文字列を入力して、結果をフィルタリングする。
Functions ビューの関数にカーソルを移動すると、その関数の詳細情報が表示されます。
関数をダブルクリックすると、Callers ビューに呼び出し関数に関する情報が表示され、Callees ビューに呼び出された関数に関する情報が表示されます。
Callee ビューの関数間を移動するには、
または
を選択します。
コスト形式を設定するには、$ を選択します。絶対コスト、相対コスト、および親に対する相対コストを表示できます。プロジェクトに由来するプロファイリング情報のみを表示するには、
を選択します。
再帰的または循環的な関数呼び出しを適切に処理するには、O を選択してサイクル検出を有効にします。
関数名を表示する際にテンプレート・パラメーター・リストを削除するには、<> を選択します。
Memcheck によるメモリー・リークの検出、関数の実行のプロファイル、外部アプリケーションでの Valgrind ツールの実行、プロジェクトの Valgrind 設定の指定、Valgrind Callgrind、およびValgrind Memcheckも参照してください 。
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.