Мощь и беспомощность автоматической оптимизации

         

Мощь и беспомощность автоматической оптимизации

Мощь и беспомощность автоматической оптимизации
Введение
Что не надо оптимизировать
Константная подстановка в условиях
Листинг1 не оптимизированный вариант
Листинг2 оптимизированный вариант
Удаление копий переменных

Листинг 3 переменные a и b — лишнее
Устранение хвостовой рекурсии
Листинг 5 хвостовая рекурсия до оптимизации
Листинг6 хвостовая рекурсия после оптимизации


Что надо оптимизировать
Удаление неиспользуемых функций
Внос инвариантных функций из циклов
Листинг 7 не оптимизированный вариант с инвариантом в теле цикла
Нормализация циклов
Листинг 9 ненормализованный цикл

Листинг10 нормализованный цикл
Разворот циклов
Листинг 13 цикл до разворота
Листинг14 цикл, развернутый на 4 итерации (меньшей размер, большая скорость)
Программная конвейеризация
Авто-параллелизм
Листинг 16 не оптимизированный вариант
Листинг17 оптимизированный вариант
Упорядочивание обращений к памяти
Листинг 20 обработка массивов по столбцам (не оптимизированный вариант)

Листинг21 обработка массивов по столбцам (оптимизированный вариант)
Удаление лишних обращений к памяти
Листинг 24 пример с лишними обращениями к памяти, от которых нельзя избавиться
Листинг25 пример с лишними обращениями к памяти, от которых можно избавиться вручную
Регистровые ре-ассоциации
Листинг 27 не оптимизированный кандидат на регистровую ре-ассоциацию
Заключение
Содержание раздела