Если большая часть внутреннего цикла состоит в тривиальных операциях присваивания, их часто можно удалить из цикла, если перепланировать использование переменных. Чтобы исключить присваивание i = j, нужно в последующем коде ставить вместо переменной i переменную].
• Удаление безусловных переходов. В быстром цикле не должно быть безусловных переходов. Безусловный переход в конце цикла может быть удален путем «поворота» этого цикла таким образом, чтобы в конце его оказалось условное ветвление. Эта операция обычно выполняется оптимизирующими компиляторами.
• Слияние циклов. Если два соседних цикла работают с одним и тем же набором элементов, то их тела следует объединить, чтобы осталась только одна управляющая конструкция (заголовок цикла).
Логические правила
• Используйте алгебраическую эквивалентность. Дорогостоящую логическую операцию можно заменить на эквивалентную ей алгебраическую, которая будет вычисляться быстрее.
• Сокращение монотонных функций. Если нужно проверить, превысила ли неубывающая монотонная функция нескольких переменных некоторый порог, значения оставшихся переменных после достижения порога учитывать уже не нужно.
• Усложненная версия этого правила позволяет завершать цикл после достижения его цели. Циклы поиска в главах 10,13 и 15 завершают работу непосредственно после нахождения искомого элемента.
• Изменение порядка проверок. Логические проверки должны быть расположены так, чтобы более быстрые условия, которые чаще оказываются правильными, стояли перед более медленными условиями, которые реже оказываются правильными.
• В решении 9.6 приведена схема проверок, порядок которых может быть изменен.
Опубликовал vovan666
April 17 2013 00:05:43 ·
0 Комментариев ·
3459 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.