効率に関する問題の中には、実行可能ファイル内の関数の順序に問題があることや実行する命令を読み込むシーケンスに原因があることがあります。
最悪の場合、関数間の呼び出しによって結びつけられる 2 つの関数がテキスト空間で互いから遠くに離れていることがあります。 呼び出しと戻りがテキストページフォルトを引き起こす可能性があります。 データページフォルトは、テキストフォルト時間メトリックを調べることによって特定できます。 この問題を解決する方法の 1 つとして、実行可能ファイル内の関数の順序を変更するマップファイルを生成し、コンパイラに使用させます。 新しい順序は、ソートメトリックによって決定されます。 テキストページフォルトの原因である関数を関数リスト内で隣同士となるようなソートメトリックを選択してください。 詳細については、マップファイルの生成と使用 を参照してください。
命令がマップされていない場合、別の種類の命令実行遅延が発生します。 マップされていないと、ITLB (Iinstruction Translation Lookaside Buffer) ミスが発生します。 最初のミスは命令を読み込むために必要ですが、2 番目以降のミスは回避できる可能性があります。 ITLB ハードウェアカウンタのデータを記録し (たとえばカウンタ名として別名 itlb を使用)、該当するメトリックを調べることができます。
命令がマップされていても命令キャッシュにない場合には、さらに遅延が発生することがあります。 初めて命令がマップされるときには命令キャッシュミスが発生するものですが、その後のミスは回避できる可能性があります。 命令キャッシュミスと命令キャッシュストールサイクルのメトリックを調べれば、命令キャッシュミスが発生する場所と所要時間を特定できます。 これらのメトリックを調べるには、ハードウェアカウンタのオーバーフロープロファイルデータを記録する必要があります。 UltraSPARC[tm] III ハードウェアでは、命令キャッシュミスと命令キャッシュストールサイクルをカウントするハードウェアカウンタのデータを icm と icstall の別名を使用して記録できます。