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

       

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


Такая техника оптимизации называется программной конвейеризацией (software pipelining) и из трех рассматриваемых компиляторов ею не обладает ни один. Только gcc робко пытается ослабить зависимость по sum, используя два регистра при развороте на четыре итерации. Остальные же компиляторы грузят все ячейки в один и тот же регистр, очевидно, руководствуясь принципом экономии. Регистров общего назначения всего семь и их постоянно не хватает. К сожалению, компилятор не отличает ситуацию действительно дефицита регистров от их избытка, вынуждая нас прибегать к ручной оптимизации.

* msvc:  программная конвейеризация не поддерживается

* icl:       программная конвейеризация не поддерживается

* gcc:     программная конвейеризация частично поддерживается



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