Техника оптимизации под линуха

       

Свертка констант


Вычисление констант на стадии компиляции (оно же, "размножение" или "свертка" констант, constant elimination/folding/propagation или сокращенно CP)— популярный прием оптимизации, избавляющий программиста от необходимости постоянно иметь калькулятор под рукой. Все константные выражения (как целочисленные, так и вещественные) обрабатываются транслятором самостоятельно и в откомпилированный код не попадают.

Рассмотрим следующий пример: a = 2 * 2; b = 4 * с / 2; Компиляторы, поддерживающие такую стратегию оптимизации превратят его в: a = 4; b = 2 * с;

Улучшенная свертка констант, в англоязычной литературе именуемая "advanced constant folding/propagation" заменяет все константные переменные их непосредственным значением, например: a = 2; b = 2 * a; c = b - a;

превращается в c = 2;

Свертку констант в полной мере поддерживают все три рассматриваемых компилятора: vc, icl и gcc.



Содержание раздела