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

       

Свободная таблица качества оптимизации


компилятор

действие

Microsoft Visual C++ 6

IntelC++ 8.0

GCC 3.3.4

выравнивание циклов

не выравнивает

не выравнивает

выравнивает по границе степени двойки

разворот циклов

не разворачивает

разворачивает циклы без ветвлений с переменным и постоянным кол-вом итераций

разворачивает циклы с постоянным кол-вом итераций

шелушение циклов

не шелушит

шелушит

шелушит

векторизация циклов

не векторизует

векторизует

векторизует начиная с версии 3.4.3

авто-параллелизм

не поддерживает

поддерживает

не поддерживает

программная конвейеризация

не поддерживает

не поддерживает

частично поддерживает

предвычисление индуктивных циклов

предвычисляет простые циклы

не предвычисляет

не предвычисляет

разбивка длинных цепочек зависимостей

не разбивает

не разбивает

разбивает, начиная с версии 4.0.0

устранение хвостовой рекурсии

устраняет

не устраняет

устраняет

объединение циклов

не объединяет

не объединяет

не объединяет

трепание циклов

не поддерживает

не поддерживает

не поддерживает

расщепление циклов

не расщепляет

расщепляет

не расщепляет

нормализация циклов

нормализует некоторые циклы

нормализует некоторые циклы

нормализует некоторые циклы

масштабирование циклов

масштабирует некоторые циклы

масштабирует некоторые циклы

масштабирует некоторые циклы

замена циклов с предусловием на циклы с постусловием

заменяет

заменяет

заменяет

стремление циклов к нулю

всегда стремит циклы к нулю

никогда не стремит циклы к нулю

стремит некоторые циклы к нулю

branch-count-reg

не использует

не использует

не использует

вынос инвариантных ветвлений

не выносит

не выносит

выносит, начиная с версии 3.4.3

ротация ветвлений

выполняет

не выполняет

не выполняет

упорядочивание обращение к памяти

частично упорядочивает обращения к памяти

частично упорядочивает обращения к памяти

частично упорядочивает обращения к памяти



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