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

оптимизированный вариант


На суперкомпьютерных компиляторах такая техника оптимизации используется уже давно и называется loop promotion, loop interchange или loop unswitching, но на PC она впервые появилась только в последней версии компилятора gcc. Этим заведует ключ -funswitch-loops (задействовать вынос инвариантных ветвлений), max-unswitch-insns (максимальное количество инструкций, которое может иметь "расщепляемый" цикл) и max-unswitch-level

(максимальное количество инвариантный ветвлений, которые может иметь "расщепляемый цикл").

Приверженцы остальных компиляторах вынуждены выносить инварианты самостоятельно.

* msvc:  не выносит инвариантные ветвления

* icl:       не выносит инвариантные ветвления

* gcc:     выносит инвариантные ветвления, начиная с версии 3.4.3



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