Читаем Генерация высококачественного кода для программ, написанных на СИ полностью

В таблице 2 собрана информация о том, какие приемы оптимизации выполнялись каждым компилятором на тексте теста. Каждый компилятор из рассматриваемого набора выполняет простейшие приемы оптимизации, такие как свертка констант и алгебраические упрощения. Большинство применяют методы оптимизации некоторого промежуточного уровня, включающего снижение мощности и удаление общих подвыражений. Некоторые выполняют оптимизацию высокого уровня, такую как вынесение инвариантного кода и удаление переменных индукции циклов. Ни один не выполняет успешно слияние циклов, и только Datalight Optimum-C делает попытки, далеко не удовлетворительные, применения глубокого удаления общих подвыражений.

--------------------------------------------------------------¬

¦Таблица 2: Результаты теста оптимизации ¦

+-------------------------T---T---T---T---T---T---T---T---T---+

¦ КОМПИЛЯТОР ВЕРСИЯ ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦ 5 ¦ 6 ¦ 7 ¦ 8 ¦ 9 ¦

+-------------------------+---+---+---+---+---+---+---+---+---+

¦МЕТОДЫ ОПТИМИЗАЦИИ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦Свертка констант (целых) ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦

¦Свертка констант (плав.) ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦

¦Размножение констант ¦ ¦ ¦ * ¦ ¦ ¦ * ¦ * ¦ ¦ * ¦

¦Размножение копий ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ ¦ * ¦

¦Алгебр.упрощения ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦

¦Подавление деления на 0 ¦ ¦ * ¦ ¦ ¦ ¦ * ¦ * ¦ ¦ * ¦

¦Удаление подвыражений ¦ ¦ ¦ * ¦ * ¦ * ¦ * ¦ * ¦ ¦ * ¦

¦Снижение мощности ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦

¦Удаление излишних ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦ загрузок/сохранений ¦ * ¦ ¦ * ¦ * ¦ * ¦ * ¦ * ¦ ¦ * ¦

¦Удаление недостижи- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦ мого кода ¦ * ¦ * ¦ * ¦ * ¦ ¦ * ¦ * ¦ ¦ * ¦

¦Удаление излишних ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦ присваиваний ¦ ¦ * ¦ * ¦ ¦ ¦ * ¦ * ¦ ¦ * ¦

¦Использ. машинно- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦ зависимых команд ¦ ¦ * ¦ ¦ * ¦ ¦ * ¦ * ¦ * ¦ * ¦

¦Поддержка встроенных ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦ функций ¦ ¦ ¦ ¦ ¦ ¦ ¦ * ¦ ¦ * ¦

¦Размещение переменных ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦ в регистрах ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦

¦Непосредственные инструк-¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦ ции 80287 ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ * ¦ ¦ * ¦

¦Сжатие цепочки переходов ¦ * ¦ ¦ * ¦ * ¦ ¦ * ¦ * ¦ ¦ * ¦

¦Вынесение инвариантного ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦ кода ¦ ¦ ¦ ¦ ¦ ¦ ¦ * ¦ ¦ ¦

¦Удаление переменных ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦ индукции циклов ¦ ¦ ¦ ¦ ¦ ¦ ¦ * ¦ ¦ ¦

¦Удаление циклов ¦ ¦ ¦ ¦ ¦ ¦ ¦ * ¦ ¦ ¦

¦Удал. глуб. подвыражений ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦Разворачивание циклов ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦Слияние циклов ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

+-------------------------+---+---+---+---+---+---+---+---+---+

¦ 1 - BORLAND Turbo C 1.5, 2 - COMPUTER INNOVATIONS ¦

¦ C86Plus 1.1, 3 - DATALIGHT Optimum-C 3.14, 4 - LATTICE ¦

¦ MS-DOS C 3.2, 5 - MANX Aztec C 4.0, 6 - METAWARE High C ¦

¦ 1.4, 7 - MICROSOFT C 5.0, 8 - MICROSOFT QuickC 1.0, 9 - ¦

¦ WATCOM C 6.0. ¦

¦ * - компилятор применяет этот метод оптимизации. ¦

+-------------------------------------------------------------+

¦ Большинство включенных в обзор компиляторов языка Си ¦

¦ поддерживают простые методы оптимизации, такие как ¦

¦ алгебраические упрощения, и только несколько компиляторов ¦

¦ применяют более сложные формы, такие как удаление общих ¦

¦ подвыражений. ¦

L--------------------------------------------------------------

<p>Borland International. </p>

Выход компилятора Turbo C представляет собой разумный, но не очень оптимизированный код. Кроме свертки констант, удаления лишних загрузок регистров и алгебраических упрощений, компилятор выполняет только снижение мощности, удаление недостижимого кода и размещение переменных в регистрах. Он не поддерживает другие общие методы оптимизации, такие как удаление лишних сохранений, общих подвыражений и переменных индукции цикла, а также вынесение инвариантного кода.

Turbo C разумно управляет прологом и эпилогом функций и использованием регистров, засылая в стек и извлекая только те регистры, которые явно используются внутри тела функции.

<p>Computer Innovation Inc. </p>

Компилятор C86Plus вырабатывает хороший код со средним уровнем оптимизации. Он выполняет базовые приемы оптимизации, такие как свертка констант и размножение копий. Однако он не выполняет размножение констант для удаления лишних сохранений.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных