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

       

Константная подстановка в функциях


Если все аргументы функции — константы, и она не имеет никаких побочных эффектов типа модификации глобальных/статических переменных, возвращаемое значение так же будет константой. Однако, компиляторы в подавляющем большинстве случаев об этом не догадываются. Поле зрения оптимизатора ограничено телом функции. "Сквозная" подстановка аргументов ("свертка функций") осуществима лишь в случае встраиваемых (inline) функций или глобального режима оптимизации.

Компилятор icl имеет специальный набор ключей –ip/-ipo, форсирующий глобальную оптимизацию в текущем файле и всех исходных текстах соответственно, что позволяет ему выполнять константную подстановку в следующем коде:

       f1(int a, int b)

       {

       return a+b;

       }

       f2 ()

       {

              return f1(0x69, 0x96) + 0x666;

       }



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