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

       

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


Расплатой за отказ от индукции становится появление "лишней" инструкции умножения, однако, накладные расходы на ее выполнение с лихвой окупаются конвейеризацией (а при желании и векторизацией!) цикла. Такая техника оптимизации называется "разбивка длинных цепочек зависимостей" (breaks long dependency chains) и реализована только в последних версиях gcc (за это отвечает ключ -fsplit-ivs-in-unroller), а все остальные рассматриваемые компиляторы на это, увы, не способны.

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

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

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



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