C++ プロファイリング ツール
このチュートリアルでは、C++ に最適なプロファイラーのいくつかを紹介します。
C++ プロファイリング ツール
プロファイリングにより、プログラムがどの部分に時間を費やしているかを知ることができます。 これは段階的なプロセスであり、次のとおりです。
- まず、プロファイリングを使用してプログラムをコンパイルおよびリンクします。
- 次に、プログラムを実行して、データ ファイルを生成します。
- 次に、プロファイリング ツールを実行してプロファイル データを分析します。
C++ で使用できるプロファイリング ツールは多数あります。 このチュートリアルでは、C++ に最適なプロファイリング ツールのいくつかを紹介します。
GNU プロファイラ
GNU プロファイラーは、どこにでもある C++ プロファイリング用のフリー ソフトウェアです。 これはgprof
と省略され、IDE の助けを借りて GUI で結果を生成できます。
gprof
にも同じ 3つのステップがあります。
- プロファイリングを使用してプログラムをコンパイルおよびリンクします。
- プログラムを実行します。
gprof
を実行して、プロファイル データを分析します。
gprof
には、次のオプションを含むコマンドの概要があります。
- 出力オプション
- 分析オプション
- その他のオプション
- 非推奨のオプション
- シンスペック
gprof
は、Windows、macOS、および Linux ベースの C++ システムでサポートされています。
gprof
は、出力を解釈するさまざまな方法を提供します。これには、フラット プロファイル、コール グラフ、および行ごとのプロファイリングが含まれます。これにより、gprof
は C++ 用の最高のプロファイリング ツールの 1つになります。 バックドローは、出力の不正確さを含む場合があり、Unix との互換性がない場合もあります。 完全なドキュメントを表示するには、この リンク にアクセスしてください。
インテル VTune プロファイラー
インテル VTune プロファイラーは、さまざまな言語用の無料のプロファイル ツールでもあります。 言語には、C、C++、C#、Python、OpenCL™ コード、Fortran、GoLang、Java、Assembly、.Net などが含まれます。
Intel Vtune Profiler は、システムとアプリケーションのパフォーマンスを最適化するために使用されます。 また、ストレージ、IoT、クラウド、メディアなどのシステム構成を最適化します。
このツールのその他の主な機能は次のとおりです。
- システムとアプリケーションのパフォーマンスを最適化し、熱および電力関連のスロットリングを回避します。
- Intel Vtune Profiler は、システム データを大まかな形式で長時間取得できます。 また、ソース コードにマッピングされた詳細な結果を取得することもできます。
- Intel Vtune Profiler は、加速位置を含むアプリケーションのパフォーマンスを調整できます。
Intel Vtune Profiler は、Windows、macOS、および Linux ベースの C++ システムでサポートされています。
インテル VTune プロファイラーは、この リンク からダウンロードできます。
Google パフォーマンス ツール
perftools
は、コード インストルメンテーションを必要としない C++ に使用できる Google のプロファイラーです。 gperftools
は、マルチスレッドの高性能 malloc()
実装のコレクションです。
このツールは、ヒープおよび CPU プロファイラーを含め、BSD ライセンスの下で配布されます。 このツールは、すべての UNIX ベースのシステムで使用できます。
このツールの主な機能は次のとおりです。
- 非常に優れたグラフィック出力を備えています。
- メモリ プロファイリング、リーク チェック、および CPU プロファイリングを実行できます。
- プロファイリングのための最速のツールの 1つと考えられています。
- コードのインストルメンテーションは必要ありません。
このツールは高速ですが、他のツールはよりきめ細かいものです。 このツールは、Unix ベースのシステムでのみサポートされています。 perftools
は、この リンク からダウンロードできます。
ヴァルグラインド
Valgrind は、C++ で使用できるプロファイリング ツール Cachegrind
と Callgrind
を含むツールのコレクションです。 callgrind
は cachegrind
の拡張です。
cachegrind
は、キャッシュのプロファイリングに使用されます。 このツールは、CPU キャッシュでシミュレーションを実行し、コード内のキャッシュ ミスを正確に特定します。
cachegrind
は、コードの各行で実行されたメモリ参照、キャッシュ ミス、および命令の数を特定できます。これらの操作は、関数ごと、モジュールごと、およびプログラム全体の概要で実行されます。 cachegrind
はどの言語でも使用できますが、プログラムの実行が遅くなります。
上記のように、callgrind
は cachegrind
の拡張です。 コールグラフを含む追加機能を備えた cachegrind
と同様に機能します。
callgrind
は、callgrind
によって収集されたデータのより良い概要を提供できる KCacheGrind
と呼ばれる視覚化で cachegrind
に含まれていました。 このツールは、cachegrind
ツールを視覚化するためにも使用できます。
Valgrind は、macOS、Linux、および WSL システムでサポートされています。 Valgrind は ここ からダウンロードできます。
TAUパフォーマンスシステム
TAU パフォーマンス システムは、C、C++、Fortran、Java、Python、および UPC で記述されたプログラムのパフォーマンス分析用のポータブル トレース ツールキットおよびプロファイリング ツールです。
Tunning Analysis and Utilities と略される TAU は、関数、基本ブロック、ステートメント、メソッド、およびイベントベースのサンプリングの計測を使用してパフォーマンス情報を収集するために使用されます。
TAU の主な機能は次のとおりです。
- TAU は C++ のすべての機能をサポートします。
- TAU は、インストルメンテーションの編成と制御に役立つプロファイリング グループの選択を提供します。
- TAU は、パフォーマンス分析結果のグラフィカルな結果に使用できるプロファイル可視化ツール
paraprof
を提供します。 - TAU を使用すると、パフォーマンスのスコアをすばやく特定できます。
- TAU はイベント トレースを生成することもできます。これは、
vampir
、paravar
、またはJumpshot
可視化ツールなどのツールでさらに表示できます。
TAU Performance System は、この リンク からダウンロードできます。
AMD μProf
AMD は、Windows、Linux、および FreeBSD プラットフォームの x86
アプリケーションの分析に使用できるプロファイリング ソフトウェア μProf
を提供しています。 このツールは、開発者がアプリケーションのパフォーマンスの限界を理解するのに役立ち、パフォーマンスを改善するために使用できます。
AMD μProf
は、次の主な機能を提供します。
- アプリケーションのパフォーマンスのボトルネックを特定するために使用されるパフォーマンス分析を提供します。
- システム分析とシステム パフォーマンス メトリックの監視も提供します。
- また、システムの熱および電力特性を監視できる電力プロファイリングも提供します。
- また、ホスト Windows システムからリモート Linux システムに接続してリモート システムからのデータ収集をトリガーし、それを GUI に報告するために使用できるリモート プロファイリングも提供します。
- また、アプリケーション ウィンドウのエネルギー ホットスポットを特定するために使用できるエネルギー分析も提供します。
AMD μProf
は Linux と Windows でサポートされています。 AMD μProf
とダウンロードの詳細については、この リンク にアクセスしてください。
C++ に最適なプロファイリング ツールをいくつか説明しました。 これらのツールは、C++ プロファイリング用に提供されるツールだけではありません。 さまざまな機能を備えた他のツールもあります。 ここにリストがあります:
Coz – 因果プロファイラー
パフォーマンス
Xperf
アップル楽器
DTrace
とても眠い
オプティック
- Oracle パフォーマンス アナライザー
ARMマップ
SmartBear AQTime
OProfile
グローコード
簡単なプロファイラー
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook