Documentation Home
> プログラムのパフォーマンス解析
プログラムのパフォーマンス解析
Book Information
はじめに
第 1 章 パフォーマンスプロファイリングおよび解析ツール
標本解析ツール
標本コレクタ
標本アナライザ
ループ解析ツール
ループツール
ループレポート
ロック解析ツール
従来のプロファイリングツール
第 2 章 標本解析ツール
標本コレクタについて
標本コレクタの使い方
統計情報
実行プロファイルデータ
プログラムのメモリ使用状況:アドレス空間データ
標本データの収集
プロファイルの頻度の制御
標本のマーキング
ブレークポイント
「新規標本」コマンド
周期的な標本採取
標本アナライザについて
実験結果の読み込み
表示のためのデータの種類の選択
データの種類と表示形式
表示形式の選択
「概要」表示画面
「標本の詳細」ダイアログボックス
「ヒストグラム」表示画面
「累計」表示画面
「アドレス空間」表示画面
メモリのカテゴリ
「アドレス空間」表示画面のレイアウト
「統計」表示画面
アプリケーションの再配置
実行時実験標本の比較
実験データの印刷
実験データのエクスポート
第 3 章 ループ解析ツール
基本概念
環境の設定
ループタイミングファイルの生成
その他のコンパイラオプション
プログラムの実行
ループツールの起動
タイミングファイルの読み込み
ループツールの使用
ファイルを開く
全ループに関するレポートの作成
ループツールグラフの印刷
エディタの選択
ヒントの呼び出しとソースコードの編集
ループレポートの起動
タイミングファイル
ループレポートのフィールド
コンパイラヒント
0. ヒントはありません。
1. ループ中に手続き呼び出しがあります。
2. コンパイラはこのループに対して 2 つのバージョンを生成しました。
3. ループ中に、変数 "%s"に対するデータの依存関係があります。
4. 最適化の間に、ループが大幅に変形されています。
5. ループは、並列化動作によって効果が得られるかどうか不明です。
6. ループにユーザーが挿入した DOALL プラグマが付いています。
7. ループ中に複数の出口があります。
8. ループ中にマルチスレッドで安全でない I/O または他の関数呼び出しがあります。
9. ループ中に制御が逆方向に進む箇所があります。
10. ループは分散して実行されている可能性があります。
11. 複数のループが融合されている可能性があります。
12. 複数のループが交換されている可能性があります。
コンパイラの最適化とループへの影響
インライン化
ループの変形 : 展開、詰め込み、分割、および入れ替え
逐次ループの内部に入れ子にした並列ループ
第 4 章 従来のプロファイリングツール
基本概念
prof によるプログラムプロファイルの生成
prof 出力の例
gprof によるコールグラフプロファイルの生成
tcov によるステートメントレベルの解析
tcov 用のコンパイル
tcov によってプロファイル化された共有ライブラリの生成
ファイルのロック
tcov ランタイムによって報告されるエラー
tcov Enhanced − ステートメントレベルの解析
tcov Enhanced 用のコンパイル
プロファイル化された共有ライブラリの生成
ファイルのロック
tcov 用ディレクトリおよび環境変数
デフォルト設定の無効化
絶対パス名と相対パス名
TCOVDIR と SUN_PROFDATA_DIR
-xprofile=tcov
tcov プログラムについて
第 5 章 ロック解析ツール
基本概念
ロック lint の概要
ロック lint のための情報収集
ロック lint ユーザーインタフェース
ロック lint の使い方
ロック lint 環境の管理
一時ファイル
メークファイルの規則
コードのコンパイル
ロック lint サブコマンド
ロック lint の起動と終了
ツール状態の設定
プログラム情報の管理
関数管理
変数管理
ロック管理
ロックの使用状況の解析
解析後のクエリー
ロック lint の制限事項
ソースコードへの注釈の挿入
ソースコードへの注釈の挿入を使用する理由
注釈のスキーマ
ロック lint NOTE の利用
NOTE と _NOTE
NOTE が使われる場所
NOTE が使われるべきでない場所
データの保護方法
読み取り専用変数
非保護読み取りの許可
ロックの階層関係
ロック副作用を持った関数
シングルスレッド化コード
到達不可能なコード
ロックの順序
ほかのスレッドに対して不可視な変数
変数が保護されているという想定
ロック lint によって認識されるアサーション
全ロックの解放の確認
競合スレッドがないことの確認
ロック状態のアサート
付録 A ロック lint コマンドリファレンス
サブコマンド要約
ロック lint の命名規則
ロック lint サブコマンド
analyze
ロック lint の analyze フェーズ
assert
assert side effect
assert mutex|rwlock protects
assert mutex protects
assert rwlock protects
assert order
assert read only
assert rwlock covers
declare
declare mutex mutexdeclare rwlocks rwlock
declare func_ptr targets func
declare nonreturning func
declare one tag
declare readable var
declare root func
disallow
disallows
exit
files
funcptrs
funcs
funcs [-adehou] func ...
funcs [-adehilou]
funcs [-adehlou] [directly] called by func ...
funcs [-adehlou] [directly] calling func ...
funcs [-adehlou] [directly] reading var ...
funcs [-adehlou] [directly] writing var ...
funcs [-adehlou] [directly] accessing var ...
funcs [-adehlou] [directly] affecting lock ...
funcs [-adehlou] [directly] inverting lock ...
directly について
help
ignore
load
locks
locks [-co] lock ...
locks [-col]
locks [-col] [directly] affected by func ...
locks [-col] [directly] inverted by func ...
members
order
order [lock [lock]]
order summary
pointer calls
reallow
reallows
refresh
restore
save
saves
start
start の使用例
デフォルトを使用する
あらかじめ記述されたスクリプトを利用する
特定のシェルで開始する
sym
unassert
vars
vars [-aho] var ...
vars [-ahilo]
vars [-ahlo] protected by lock
vars [-ahlo] [directly] read by func ...
vars [-ahlo] [directly] written by func ...
vars [-ahlo] [directly] accessed by func ...
directly について
ロックの逆転
© 2010, Oracle Corporation and/or its affiliates