定数折りたたみ
定数オペランドを持つ式はコンパイル時に評価できるため、コンパイル時の評価を回避することにより、実行時のパフォーマンス
例:
以下のコードフラグメントでは、式(3+5)はコンパイル時に評価され、定数8に置き換えることができます。
int f (void){ return 3 + 5;}
以下は、定数折りたたみ後のコード断片です。
int f (void){ return 8;}
注:
定数折りたたみは比較的簡単な最適化です。
プログラマは一般的に(3+5)のような式を直接記述しませんが、これらの式はマクロ展開や定数伝播などの他の最適化の後では比較的一般的です。
すべてのCコンパイラは、マクロ展開後に存在する整数定数式を折り畳むことができます(ANSI C要件)。 ほとんどのCコンパイラは、他の最適化の後に導入された整数定数式を折り畳むことができます。
一部の環境では、実行時に動的に変更できる浮動小数点丸めモードがいくつかサポートされています。 これらの環境では、コンパイル時に丸めモードがわからない場合は、(1.0/3.0)などの式を実行時に評価する必要があります。