テキストのページフォルトによって、アプリケーションの時間が大量に使われている場合は、アナライザによってプログラム関数が並べ替えられ、関数の順序が変更されたマップファイルが生成されます。最も使用頻度の高い関数がグループにまとめられて同じページセットに配置されるので、呼び出された関数は、すでにメモリー上にある確率が高くなります。
-M オプションではマップファイルがリンカーに渡され、アプリケーションと再リンクし、小さなテキストアドレス空間で実行可能なアプリケーションを新規に生成できます。
アプリケーションを並べ替えた後、新しい実験ファイルを実行して並べ替えの前と後のバージョンを比較することができます。
アプリケーションを並べ替えるには、次の手順に従ってください。
-xF オプションを使用してアプリケーションをコンパイルします。
並べ替えには、-xF オプションが必要です。このオプションを指定すると、コンパイラによって、独立して再配置可能な関数が生成されます。
cc -g -xF -c a.c b.c cc -o application_name a.o b.o
CC -g -xF -c a.cc b.cc CC -o application_name a.o b.o
Fortran アプリケーションの場合、次のように指定します。
f77 -g -xF -c a.f b.f f77 -o application_name a.o b.o
次の警告メッセージが表示された場合には、静的にリンクされたファイルを確認してください。共有されていないオブジェクトやライブラリなどのファイルが、-xF オプションを指定してコンパイルされていないことがあります。
ld: warning: mapfile: text: .text%function_name:
object_file_name:
Entrance criteria not met the named file, function_name, has not
been compiled with the -xF option.
デバッグするアプリケーションを Sun WorkShop に読み込みます。
「デバッグ」ウィンドウから「ウィンドウ」、「標本コレクタ」を選択して標本コレクタを起動し、パフォーマンスデータを収集します。
Sun WorkShop でアプリケーションを実行します。
指定された実験データを標本アナライザに読み込みます。
「実験ファイル」⇒「マップファイル作成」を選択して、標本アナライザ内に並べ替えたマップを作成します。使用する標本、マップファイルのディレクトリ、マップファイルの名前をファイル選択ボックスに入力して、「了解」をクリックします。
マップファイルには、関数の名前と、その関数に対応するユーザー CPU 時間が示されます。プロファイルデータと関数のサイズを降順にソートすることで、テキストアドレス空間のサイズを小さくする関数の順序が指定されます。マップファイル中に記述されていない関数はすべて、マップファイル中の関数の後に配置されます。
新しいマップファイルを使ってアプリケーションをリンクします。
cc -Wl -M mapfile_name a.o b.o
cc -M mapfile_name a.o b.o
C アプリケーションでは、-M オプションを指定すると、コンパイラは -M mapfile_name をリンカーに渡します。
Fortran アプリケーションの場合、次のように指定します。
f77 -M mapfile_namea.o b.o