実行時プロファイルデータを収集したり、それを使って最適化します。
このオプションを使用すると、実行頻度のデータが集められて、実行時に保存されます。保存されたデータは後続する処理の実行時に使用され、これによってパフォーマンスが向上します。このオプションは、最適化のレベルが指定されている場合にのみ有効です。
p の値 |
意味 |
---|---|
collect[:name]
|
実行頻度のデータを集めて保存します。後に -xprofile=use を指定した場合にオプティマイザがこれを使用します。コンパイラは、コードを生成して実行頻度を計ります。name には分析するプログラム名を指定します。name は省略可能で、省略すると実行可能ファイル名は a.out とみなされます。
-xprofile=collect:name でコンパイルしたプログラムは、実行時に、実行時のフィードバック情報を書き込むサブディレクトリ name.profile を作成します。データは、このサブディレクトリのファイル feedback に書き込まれます。プログラムを繰り返し実行すると、実行頻度のデータが feedback ファイルに累積されます。つまり、前の実行で出力されたデータはなくなりません。
|
use[:name] |
有効な最適化を行うために実行頻度データを使います。name には分析する実行可能ファイル名を指定します。name は省略可能で、省略すると実行可能ファイル名は a.out とみなされます。
プログラムは、前の実行で feedback ファイルに生成され、保存された実行頻度データを使って最適化されます。このファイルは、-xprofile=collect でコンパイルしたプログラムを前に実行したときに書き込まれたものです。
ソースファイルと他のコンパイラオプションは、feedback ファイルを生成したコンパイル済みプログラムをコンパイルしたときとまったく同じでなければなりません。-xprofile=collect:name でコンパイルしたのであれば、同じプログラム名 name を最適化コンパイルの -xprofile=use:name にも指定しなければなりません。
|
tcov |
「新しい」形式の tcov を使った基本ブロックカバレージ分析。
tcov の基本ブロックプロファイルの新しい形式です。-xa オプションと類似した機能を持つが、ヘッダーファイルにソースコードが含まれているプログラムや、C++ テンプレートを使用するプログラムのデータを集めます。コード生成は -xa オプションと類似しているが、.d ファイルは生成されません。その代わりにファイルが 1 つ生成されます。このファイルの名前は最終的な実行可能ファイルに基づきます。たとえば、 /foo/bar にある myprog を実行する場合、データファイルは /foo/bar/myprog.profile/tcovd に保存されます。
tcov を実行する場合は、新しい形式のデータが使用されるように -x オプションを指定します。-x オプションを指定しないと、デフォルトで古い形式の .d ファイルが使用され、予期しない結果が出力されます。
-xa オプションとは異なり、TCOVDIR 環境変数はコンパイル時間には影響しません。ただし、TCOVDIR 環境変数の値はプログラムの実行時に使用されます。 |
-xprofile=tcov オプションと -xa オプションは、1 つの実行可能ファイルで同時に使用できます。つまり、-xprofile=tcov でコンパイルされたファイルと -xa でコンパイルされたファイルからなるプログラムをリンクすることはできますが、両方のオプションを使って 1 つのファイルをコンパイルすることはできません。
-xprofile=tcov と -g は同時に使用できません。
コンパイルとリンクを別々に実行する場合で、コンパイルで -xprofile オプションを使用した場合は、リンクでも -xprofile を使用する必要があります。
-xa、tcov(1) のマニュアルページ 『プログラムのパフォーマンス解析』