2.3 最適化オプションの選択最適化オプションの選択

ARM® コンパイラ は最適化をいくつか実行してコード サイズを縮小し、アプリケーションのパフォーマンスを向上させます。ただし、最適化手法を使用すると、デバッグ情報が失われたり、ビルド時間が長くなったり、イメージのサイズが大きくなったりする可能性があります。最適化レベルは、これらの 3 つのパラメータのトレードオフになります。

ARM コンパイラ は、さまざまな最適化のトレードオフに対する最適化オプションを提供します。主に、パフォーマンスやイメージ サイズを最適化できます。ただし、最適化手法の細かい制御にはいくつかのオプションがあります。最適化のオプションは次のとおりです:

-O0
これがデフォルトの最適化設定です。この設定により、ほとんどの最適化が無効になり、ビルドされたイメージとアプリケーション ソース コードとの間に最良の相関関係が構築されます。
-O1
これにより、-O0 と比較してパフォーマンスがより最適化されます。また、デバッグに利用できる情報が減少し、イメージ サイズが大きくなる可能性があります。ARM はデバッグにはこのオプションを推奨します。
-O2
これにより、-O1 と比較してパフォーマンスがより最適化されます。また、デバッグに利用できる情報が減少し、イメージ サイズが大きくなる可能性があります。
-O3
これにより、-O2 と比較してパフォーマンスがより最適化されます。また、デバッグに利用できる情報が減少し、イメージ サイズが大きくなる可能性があります。
-Ofast
これにより、-O3 と比較してパフォーマンスがより最適化されます。また、デバッグに利用できる情報が減少し、イメージ サイズが大きくなる可能性があります。この最適化レベルでは、ARM コンパイラが特定の言語標準に違反する可能性があります。
-Omax
これにより、-Ofast と比較してパフォーマンスがより最適化されます。また、デバッグに利用できる情報が減少し、イメージ サイズが大きくなる可能性があります。この最適化レベルでは、ARM コンパイラが特定の言語標準に違反する可能性があります。最高のパフォーマンスを得るために、ARM はこのオプションを推奨します。
-Os
このオプションを指定すると、コード サイズが小さくなり、デバッグに使用できる情報も少なくなります。このオプションを使用すると、コードが遅くなる可能性があります。
-Oz
このオプションを指定すると、-Os と比較して画像サイズがより小さくなり、デバッグに利用できる情報が減少します。このオプションを使用すると、コードが -Os よりも遅くなる可能性があります。最高のコード サイズにするために、ARM はこのオプションを推奨します。

以下の例は、-O1 最適化オプションで実行される最適化を示しています。この最適化を実行するには、次のコマンドを使用してソース ファイルをコンパイルします。

armclang --target=arm-arm-none-eabi -march=armv7-a -O1 -c -S file.c

表 2-2 最適化の例

file.c のソース コード armclang からの最適化された出力
int dummy()
{
    int x=10, y=20;
    int z;
    z=x+y;
    return 0;
}
dummy:
    .fnstart
    movs r0, #0
    bx lr

以下の例は、-O0 最適化オプションで実行される最適化を示しています。この最適化を実行するには、次のコマンドを使用してソース ファイルをコンパイルします。

armclang --target=arm-arm-none-eabi -march=armv7-a -O0 -c -S file.c

表 2-3 最適化の例

file.c のソース コード armclang からの最適化されていない出力
int dummy()
{
    int x=10, y=20;
    int z;
    z=x+y;
    return 0;
}
dummy:
    .fnstart
    .pad #12
     sub     sp, sp, #12
     mov     r0, #10
     str     r0, [sp, #8]
     mov     r0, #20
     str     r0, [sp, #4]
     ldr     r0, [sp, #8]
     add     r0, r0, #20
     str     r0, [sp]
     mov     r0, #0
     add     sp, sp, #12
     bx	 lr
非機密扱いPDF file icon PDF 版ARM 100748_0606_00_ja
Copyright © 2016 ARM.All rights reserved.