このドキュメントでは、パフォーマンスアナライザを使用してさまざまなタイプのプログラムをプロファイルする方法を示すいくつかのチュートリアルを提供します。各チュートリアルには、ソースファイルとともにパフォーマンスアナライザを使用するための手順があり、チュートリアルのほとんどの手順にはスクリーンショットが含まれています。
すべてのチュートリアルのソースコードが単一のディストリビューションに含まれています。サンプルソースコードの入手については、チュートリアルのサンプルコードの入手を参照してください。
チュートリアルは次のとおりです。
この入門チュートリアルでは、C で記述された lowfruit という名前のターゲットコードを使用します。lowfruit プログラムは非常に単純であり、それぞれが効率的な方法と非効率的な方法で実装された 2 つのプログラミングタスクのコードを含んでいます。このチュートリアルでは、C ターゲットプログラムでパフォーマンスの実験を収集する方法と、パフォーマンスアナライザでさまざまなデータビューを使用する方法を示します。各タスクの 2 つの実装を調べて、効率的なタスクと効率的ではないタスクがパフォーマンスアナライザでどのように示されるかを確認します。
この入門チュートリアルでは、Java で記述された jlowfruit という名前のターゲットコードを使用します。C プロファイリングチュートリアルで使用されるコードと類似した jlowfruit プログラムは非常に単純であり、それぞれが効率的な方法と非効率的な方法で実装された 2 つのプログラミングタスクのコードを含んでいます。このチュートリアルでは、Java ターゲットでパフォーマンスの実験を収集する方法と、パフォーマンスアナライザでさまざまなデータビューを使用する方法を示します。各タスクの 2 つの実装を調べて、効率的なタスクと効率的ではないタスクがパフォーマンスアナライザでどのように示されるかを確認します。
このチュートリアルは、多数のプログラミング操作を 1 つずつ実行する jsynprog という名前の Java コードに基づいています。算術を行うもの、ガベージコレクションを呼び出すもの、動的にロードされた C++ 共有オブジェクトを使用して、Java からネイティブコードへの呼び出しとその逆の呼び出しを行うものがあります。このチュートリアルでは、さまざまな操作の実装方法と、プログラムに関するパフォーマンスデータがパフォーマンスアナライザで表示される方法を確認します。
マルチスレッドプログラムでのハードウェアカウンタプロファイリング
このチュートリアルは、多数のタスクを実行して各タスクのスレッドを生成し、タスクごとに異なる同期手法を使用する、mttest という名前のマルチスレッドプログラムに基づいています。このチュートリアルでは、タスクにおける計算の間のパフォーマンスの違いを確認して、ハードウェアカウンタプロファイリングを使用して、2 つの関数の間の予期しないパフォーマンスの違いを調べて理解します。
このチュートリアルも、多数のタスクを実行して各タスクのスレッドを生成し、タスクごとに異なる同期手法を使用する、mttest という名前のマルチスレッドプログラムに基づいています。このチュートリアルでは、同期手法の間のパフォーマンスの違いを調べます。