Sun Studio 12: C ユーザーズガイド

B.2.88 -xF[=v[, v...]]

リンカーによる関数と変数の最適な順序の並べ替えを有効にします。

このオプションは、関数とデータ変数を細分化された別々のセクションに配置するようコンパイラに指示します。これでリンカーは、リンカーの -M オプションで指定されたマップファイル内の指示に従ってこれらのセクションの順序を並べ替えてプログラムのパフォーマンスを最適化することができます。通常は、この最適化によって効果が上がるのは、プログラムの実行時間の多くがページフォルト時間に費やされている場合だけです。

変数を並べ替えることによって、実行時間のパフォーマンスにマイナスの影響を与える次のような問題を解決できます。

最適なパフォーマンスを得るために変数と関数の順序を並べ替えるには、次の処理が必要です。

  1. -xF によるコンパイルとリンク

  2. 『プログラムのパフォーマンス解析』マニュアル内の、関数のマップファイルを生成する方 法に関する指示に従うか、または、『リンカーとライブラリ』内の、データのマップ ファイルを生成する方法に関する指示に従います。

  3. リンカーの -M オプションを使用して新しいマップファイルを再リンクします。

  4. アナライザで再実行して、パフォーマンスが向上したかどうかを検証します。

B.2.88.1 値

v には、次のいずれかを指定します。

表 B–23 -xF の値

値 

意味 

[no%]func

関数を個々のセクションに細分化します [しません]。 

[no%]gbldata

大域データ (外部リンケージのある変数) を個々のセクションに細分化します [しません]。 

[no%]lcldata

局所データ (内部リンケージのある変数) を個々のセクションに細分化します [しません]。 

%all

関数、大域データ、局所データを細分化します。 

%none

何も細分化しません。 

-xF を指定しない場合のデフォルトは、-xF=%none です。引数を指定しないで -xF を指定した場合のデフォルトは、-xF=%none,func です。

-xF=lcldata を指定するとアドレス計算最適化が一部禁止されるので、このフラグは実験として意味があるときにだけ使用するとよいでしょう。

analyzer(1)、debugger(1)、ld(1) のマニュアルページも参照してください。