Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Rollover вопрос на миллион
Форум программистов > Общая > Общий форум
lamez
Может быть очень ламерский вопрос, но позвольте!
Прочитал две книжки - одну по железу, другую по программированию.
В последней пишется про оптимизацию программ. НАпример Rollover Cycles - разворачивание циклов.
Мол, если мы развернем цикл, то нам придется меньше условий проверять.
Читаю книгу по организации ЭВМ. Пишут: Блок предсказания переходов: Один цикл - две ошибки максимум на предсказание и никаких лишних затрат на проверку условия. Несколько циклов - больше ошибок предсказаний, больше времени на откат и т.д.
Тоесть первая идея говорит о том, что циклы надо разворачивать, вторая - не надо ничего разворачивать и самый громадный цикл - есть наше счастье.
Кому верить? Помогите разобраться, может я чего-то путаю?
alexsid
разворачивание уменьшает время выполнения
т.к. снижает кол-во инструкций для обработки
European
Цитата(lamez @ 22:06:2008 - 10:02) *
Читаю книгу по организации ЭВМ. Пишут: Блок предсказания переходов: Один цикл - две ошибки максимум на предсказание и никаких лишних затрат на проверку условия.

А как же выйти из цикла если условие не проверяется? Блок предсказания переходов анализирует именно условия, т.к. переходы возможны только по условию (безусловные переходы в расчет брать не будем).

Оптимизация вещь конечно хорошая, но современные компиляторы генерируют довольно качественный код в большинсве случаев. И опускаться до разворачивания циклов это последняя стадия smile.gif На чем, кстати, пишете?
Gamlet
Можно спросить: Зачем оптимизировать код до такой ситуации. Лично я советую слушать книгу по программированию. Там скорее всего указана совокупность или последняя инстанция выполнения. Так что так надежнее. Но я лично пишу так, как мне удобнее. Это не самый умный подход, но меня устраивает. И вообщем то тебе советую. Так проще, сейчас сопроцесоры стоят такие, что многие мелочи они и не замечают, а более сложные не заметиш ты.
lamez
Цитата(European @ 1:07:2008, 10:54 ) *
А как же выйти из цикла если условие не проверяется? Блок предсказания переходов анализирует именно условия, т.к. переходы возможны только по условию (безусловные переходы в расчет брать не будем).

Оптимизация вещь конечно хорошая, но современные компиляторы генерируют довольно качественный код в большинсве случаев. И опускаться до разворачивания циклов это последняя стадия smile.gif На чем, кстати, пишете?

Пишу на сях под никсы, вот начал с месяца три назад. Рассмотрел опции компиляторов на оптимизацию условий, вобщем, они сами могут разворачивать, вы правы))).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.