このオプションは、 実行ファイルの実行時のパフォーマンスのチューニングで効果的に使用することができるマクロです。-fast は、コンパイラのリリースによって変更される可能性があるマクロで、ターゲットのプラットフォーム固有のオプションに展開されます。-dryrun オプションまたは -xdryrun を使用して -fast の展開を調べ、-fast の該当するオプションを使用して実行可能ファイルのチューニングを行なってください。
このオプションは、コードをコンパイルするマシン上でコンパイラオプションの最適な組み合わせを選択して実行速度を向上するマクロです。
このオプションは、次のコンパイラオプションを組み合わせて、多くのアプリケーションのパフォーマンスをほぼ最大にします。
表 A–5 -fast の拡張
オプション |
SPARC |
x86 |
---|---|---|
-fns |
X |
X |
-fsimple=2 |
X |
X |
-nofstore |
- |
X |
-xarch |
X |
X |
-xbuiltin=%all |
X |
X |
-xcache |
X |
X |
-xchip |
X |
X |
-xlibmil |
X |
X |
-xlibmopt |
X |
X |
-xmemalign |
X |
- |
-xO5 |
X |
X |
-xregs=frameptr |
- |
X |
-xtarget=native |
X |
X |
-fast マクロから展開されるコンパイラオプションが、指定されたほかのオプションに影響を与えることがあります。たとえば、次のコマンドの -fast マクロの展開には -xtarget=native が含まれています。そのため、ターゲットのアーキテクチャーは -xarch に指定された SPARC-V9 ではなく、32 ビットアーキテクチャーのものに戻されます。
誤
example% CC -xarch=v9 -fast test.cc |
正
example% CC -fast -xarch=v9 test.cc |
個々の相互の関連性については、各オプションの説明を参照してください。
このコード生成オプション、最適化レベル、組み込み関数の最適化、インラインテンプレートファイルの使用よりも、そのあとで指定するフラグの方が優先されます (例を参照)。ユーザーの指定した最適化レベルは、以前に設定された最適化レベルを無効にします。
-fast オプションには -fns -ftrap=%none が含まれているため、このオプションによってすべてのトラップが無効になります。
次のコンパイラコマンドでは、最適化レベルは -x03 になります。
example% CC –fast –xO3 |
次のコンパイラコマンドでは、最適化レベルは -xO5 になります。
example% CC -xO3 –fast |
別々の手順でコンパイルしてリンクする場合は、-fast オプションをコンパイルコマンドとリンクコマンドの両方に表示する必要があります。
-fast オプションでコンパイルしたオブジェクトバイナリは移植できません。たとえば、UltraSPARC-III システムで次のコマンドを指定すると、生成されるバイナリは UltraSPARC-II システムでは動作しません。
example% CC -fast test.cc |
IEEE 標準の浮動小数点演算を使用しているプログラムには、-fast を指定しないでください。計算結果が違ったり、プログラムが途中で終了する、あるいは予期しない SIGFPE シグナルが発生する可能性があります。
以前のリリースの SPARC では、-fast マクロは -fsimple=1 に展開されました。現在では、-fsimple=2 に展開されます。
-fast の展開には、-D_MATHERR_ERRNO_DONTCARE が含まれます。
任意のプラットフォームで —fast の展開を表示するには、 CC —dryrun —fast コマンドを実行します。
>CC -dryrun -fast ### command line files and options (expanded): ### -dryrun -xO5 -xarch=sparcvis2 -xcache=64/32/4:1024/64/4 \ -xchip=ultra3i -xmemalign=8s -fsimple=2 -fns=yes -ftrap=%none \ -xlibmil -xlibmopt -xbuiltin=%all -D__MATHERR_ERRNO_DONTCARE |
-fns、-fsimple、-ftrap=%none、-xlibmil、-nofstore、-xO5、-xlibmopt、-xtarget=native