Сфера применения оптимизации
Сфера применения оптимизации
Термин "оптимизирующий компилятор" применяется поставщиками компиляторов в общем смысле, для обозначения компиляторов, которые обеспечивают какой-либо уровень оптимизации - от простейшего до наиболее сложного. Чтобы различать степень оптимизации, предоставляемую компиляторами, необходимо более точное определение терминов. Методы оптимизации кода могут применяться на разных уровнях синтаксических конструкций. От самого первичного уровня до наиболее укрупненного, т.е. на уровне оператора, блока, цикла, процедуры и программы. Чем выше уровень оптимизации, тем больше возможности повышения общей эффективности программного модуля. Однако затраты на применение большей степени оптимизации могут значительно увеличить время компиляции.
Оператор - это первичная синтаксическая единица в программе. Большинство компиляторов выполняют некоторую оптимизацию на этом уровне.
Блок - это последовательность операторов, для которой существуют единственная точка входа и единственная точка выхода. Линейный вид блока инструкций позволяет компилятору выполнять оптимизацию, основывающуюся на промежутках жизни различных данных и выражений, используемых внутри блока. Оптимизирующий компилятор выделяет операционную структуру программ путем конструирования ориентированного потокового графа программ, в котором каждая вершина представляет основной блок, а связи между вершинами представляют потоки управления. Большинство компиляторов производят оптимизацию на уровне блока.
Цикл содержит выполняемую многократно последовательность операторов. Поскольку многие программы проводят в циклах большую часть времени своего выполнения, оптимизация в этой области может дать существенное улучшение характеристик исполнения программы. Являясь обычной для компиляторов на больших компьютерах и миникомпьютерах, оптимизация на уровне цикла является новой для компиляторов Си на PC.
Процедуры - это операторы, которые содержат целые подпрограммы или функции. Оптимизация на этом уровне вообще не выполняется компиляторами для PC.
Наиболее сложный уровень оптимизации, уровень программы, в настоящее время рассматривается чисто теоретически и не включается ни одним доступным на PС, миникомпьютерах, и больших компьютерах компилятором Си. Производители, которые утверждают, что их компиляторы выполняют глобальную оптимизацию, имеют в виду уровень процедур, но не программы.
Оптимизирующие преобразования могут быть зависящими или независящими от архитектуры компьютера. Процесс компиляции компьютерной программы включает два основных действия: синтаксический/семантический анализ и генерацию кода. Синтаксический/семантический анализ существенно зависит от грамматики и специфичен для языка. Генерация кода является общей и прекрасно может быть использована для поддержки первой стадии для любого количества языков программирования.
Исходный текст конкретного языка первым делом транслируется в общую промежуточную форму, которая последовательно обрабатывается для выработки на стадии генерации машинно-зависимого кода. Машинно-независимая оптимизация, такая как выделение общих подвыражений и вынесение инвариантного кода, применяется к промежуточному коду. Машинно-зависимая оптимизация применяется к результату стадии генерации кода и использует набор команд конкретного процессора. Эта оптимизация известна как "щелевая" оптимизация, потому что эти преобразования выполняются внутри маленького окна (5 - 10 инструкций машинного уровня). Типичные примеры щелевой оптимизации включают удаление излишних операций загрузки/сохранения регистров, удаление недостижимого кода, выпрямление передач управления, алгебраические упрощения, снижение мощности (команд) и использование команд, специфических для конкретного процессора.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Сфера влияния и сфера забот
Сфера влияния и сфера забот В «Семи навыках высокоэффективных людей» Стивен Кови вводит понятия «круг влияния» и «круг забот». Если рассматривать их в трехмерном мире, то круги становятся сферами. Чтобы блогосфера не превратилась для вас в сферу забот, вы должны
Последовательность оптимизации
Последовательность оптимизации В семантическом ядре присутствуют слова и выражения совершенно разного уровня. Здесь есть поисковые запросы, которые спрашивают всего несколько раз в месяц, а есть такие, которые запрашивают в месяц десятки тысяч раз. Понятное дело, что
Методы оптимизации
Методы оптимизации Существуют различные методы машинно-зависимой и машинно-независимой оптимизации кода. Они могут применяться на всех синтаксических уровнях. Одним из простейших методов является "размножение констант". При его применении любая ссылка на константное
Слово об оптимизации
Слово об оптимизации Раннее в этой главе я обещал дать несколько подсказок как мы можем повысить качество генерируемого кода. Как я сказал, получение компактного кода не является главной целью этой книги. Но вам нужно по крайней мере знать, что мы не зря проводим свое
Сфера
Сфера Основными параметрами, которые следует указать при построении сферы (рис. 10.12), являются центр и радиус (диаметр). Рис. 10.12. СфераЧтобы приступить к построению сферы, наберите в командной строке AI_SPHERE. Сначала программа попросит указать центральную точку сферы:Specify
1.6.15. Правило оптимизации: создайте опытные образцы, заставьте их работать, прежде чем перейти к оптимизации
1.6.15. Правило оптимизации: создайте опытные образцы, заставьте их работать, прежде чем перейти к оптимизации Самый основной аргумент в пользу создания прототипов впервые был выдвинут Керниганом и Плоджером (Plauger): "90% актуальной и реальной функциональности лучше, чем 100%
12.1. Отказ от оптимизации
12.1. Отказ от оптимизации Наиболее мощная методика оптимизации, входящая в инструментарий любого программиста, заключается в том, чтобы ничего не делать.Этот весьма выдержанный в духе Дзэн совет верен по нескольким причинам. Одной из них является экспоненциальный эффект
1.6.15. Правило оптимизации: создайте опытные образцы, заставьте их работать, прежде чем перейти к оптимизации
1.6.15. Правило оптимизации: создайте опытные образцы, заставьте их работать, прежде чем перейти к оптимизации Самый основной аргумент в пользу создания прототипов впервые был выдвинут Керниганом и Плоджером (Plauger): "90% актуальной и реальной функциональности лучше, чем 100%
Искусство оптимизации
Искусство оптимизации В этом разделе речь пойдет об оптимизации изображений для Интернета и портативных устройств.Дело в том, что обычное сохранение с помощью команд File ? Save (Файл ? Сохранить) и File ? Save As (Файл ? Сохранить как) не позволяет реализовать все возможности
9.5. Вопросы оптимизации
9.5. Вопросы оптимизации Даже при наличии в программе ассемблерных вставок модуль оптимизации компилятора пытается переупорядочить и переписать код программы, чтобы минимизировать время ее выполнения. Когда оптимизатор обнаруживает, что выходные данные функции asm() не
Сфера
Сфера Команда AI_SPHERE формирует поверхность сферы . Запросы команды
Сфера
Сфера Основными параметрами, которые следует указать при построении сферы, являются центр и радиус (диаметр). Чтобы приступить к построению сферы (рис. 10.12), наберите в командной строке команду AI_SPHERE. Рис. 10.12. СфераСначала программа попросит указать центральную точку
«Сфера Ниндзя»: весь дом под контролем Николай Маслухин
«Сфера Ниндзя»: весь дом под контролем Николай Маслухин Опубликовано 09 декабря 2013 Австралийский стартап Ninja Blocks разработал Ninja Sphere — систему «умного» слежения за домом и основными устройствами на его территории. Проект не зря созвучен с