プロファイルのデータを収集、または最適化のためにプロファイルを使用します。
(SPARC) p には、collect[:<名前>]、use[:<名前>]、または tcov のいずれか 1 つを指定します。
このオプションを使用すると実行中に実行頻度データを収集して保存することができ、後続の実行ではそのデータを使用してパフォーマンスを向上させることができます。このオプションは、最適化のレベルを指定した場合にのみ有効です。
collect[:<名前>]
実行後に -xprofile=use を指定してオプティマイザで使用するために、実行頻度データを収集して保存します。コンパイラによって文の実行頻度を測定するためのコードが生成されます。
<名前> は、解析の対象となるプログラムの名前です。この名前はオプションです。 <名前> の指定を省略すると、a.out が実行可能ファイルの名前とみなされます。
-xprofile=collect: <名前> でコンパイルしたプログラムは実行時に、 <名前>.profile というサブディレクトリを作成して、実行時のフィードバック情報を保存します。データは、このサブディレクトリの feedback ファイルに書き込まれます。プログラムを複数回実行すると、実行頻度データは feedback ファイルに累積され、前回の出力は消えません。
use[:<名前>]
実行頻度データを使用して、効果的に最適化を行います。
collect:<名前> と同様に、<名前> はオプションです。これにより、プログラム名を指定できます。
-xprofile=collect でコンパイルしたプログラムを前回実行したときに作成された feedback ファイルに保存された実行頻度のデータにもとづいて、プログラムが最適化されます。
使用するソースファイルとコンパイラオプション (このオプションを除く) は、feedback ファイルの作成時に実行したコンパイル済みプログラムを作成する際に使用したものと、まったく同じでなければなりません 。-xprofile=collect:<名前> を使用してコンパイルする場合は、最適化コンパイルでも同じ名前 (-xprofile=use:<名前>) が使用されていなければなりません。
tcov
新しい形式の tcov を使用した基本ブロックカバレージ解析です。
-xprofile=tcov オプションは、新しい形式の tcov 用基本ブロックプロファイリングです。 機能は -xa オプションと類似していますが、ヘッダーファイルにソースコードがあるプログラムまたは C++ テンプレートを使用するプログラムのデータを正確に収集します。古い形式のプロファイリングについては 「-xa」の節、tcov(1)マニュアルページ、および『プログラムのパフォーマンス解析』を参照してください。
時間計測コードの組み込みは -xa オプションの場合と同様に実行されますが、.d ファイルは生成されません。その代わりに、最終的な実行可能ファイルにもとづいた名前をもつファイルが 1 つだけ生成されます。たとえば、プログラムが /foo/bar/myprog.profile から実行されると、データファイルは /foo/bar/myprog.profile/myprog.tcovd に格納されます。
-xprofile=tcov と -xa オプションは、同じ実行可能ファイル内に指定することができます。すなわち、-xprofile=tcov でコンパイルされたファイルと -xa でコンパイルされたファイルが両方含まれたプログラムをリンクすることができます。1 つのファイルを両方のオプションでコンパイルすることはできません。
tcov を実行する時点で、新しい形式のデータを使用させるように -x オプションを渡さなければなりません。これを渡さないと、古い.d ファイルがまだ存在する場合に tcov はデフォルトで古いファイルからデータを使用するため、予想に反した出力が生成されます。
-xa オプションの場合とは異なり、TCOVDIR 環境変数はコンパイル時には影響力を持ちません。ただし、その値はプログラムの実行時に使用されます。詳細については tcov(1) のマニュアルページおよび『プログラムのパフォーマンス解析』を参照してください。