Сводная таблица качества оптимизации
компилятор
действие | Microsoft Visual C++ 6 | IntelC++ 8.0 | GCC 3.3.4 | ||||
свертка констант | выполняет улучшенную свертку | выполняет улучшенную свертку | выполняет улучшенную свертку | ||||
объединение констант | никогда не объединяет | объединяет идентичные строковые и вещественные константы | объединяет идентичные строковые и вещественные константы | ||||
константная подстановка в условиях | подставляет | не подставляет | подставляет | ||||
свертка функций | сворачивает только встраиваемые | с ключом -ipo сворачивает все | сворачивает только встраиваемые | ||||
удаление мертвого кода | удаляет только в основной ветке | удаляет во всех ветках | удаляет только в основной ветке | ||||
удаление неиспользуемых функций | никогда не удаляет | удаляет с ключом –ipo | никогда не удаляет | ||||
удаление неиспользуемых переменных | удаляет с все неявно неиспользуемые отслеживанием генетических связей | удаляет с все неявно неиспользуемые отслеживанием генетических связей | удаляет с все неявно неиспользуемые отслеживанием генетических связей | ||||
удаление неиспользуемых выражений | удаляет | удаляет | удаляет | ||||
удаление лишних обращений к памяти | частично | частично | частично | ||||
удаление копий переменных | удаляет | удаляет | удаляет | ||||
размножение переменных | не размножает | размножает | не размножает | ||||
распределение переменных по регистрам | распределяет отлично | распределяет плохо | распределяет средне | ||||
реассоциацирует регистры | не реассоцирует | реассоцирует | не реассоцирует | ||||
алгебраическое упрощение выражений | в большинстве случаев выполняет упрощение | упрощает простые и некоторые сложные выражения | упрощает простые выражения | ||||
упрощение алгоритма | упрощает некоторые операции | никогда не выполняет | никогда не выполняет | ||||
использование подвыражений | распознает явные подвыражения только в основной ветке | распознает все явные и частично неявные подвыражения во всех ветках | распознает явные подвыражения во всех ветках |