Оптимизатор объектного кода


Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Бинарный оптимизатор берет существующий вывод от компилятора и создает лучший исполняемый файл с той же функциональностью.

Код объекта оптимизатор , иногда также известный как после прохода оптимизатор или, для небольших участков коды, глазков оптимизатора , принимает выходной сигнал с шагом компиляциями исходного языка - код объекта или двоичный файл - и пытается заменить идентифицируемые разделы коды с кодом замены, который более эффективен с точки зрения алгоритмов (обычно с улучшенной скоростью).

Примеры

  • « IBM Automatic Binary Optimizer для z / OS [1] » (ABO) был представлен в 2015 году как передовая технология, предназначенная для оптимизации производительности приложений COBOL на мэйнфреймах IBM Z [2] без необходимости перекомпиляции исходного кода. Он использует передовую технологию оптимизации, включенную в последнюю версию Enterprise COBOL. [3] ABO оптимизирует скомпилированные двоичные файлы, не влияя на логику программы. В результате приложение работает быстрее, но поведение остается неизменным, поэтому усилия по тестированию могут быть сокращены. Клиенты обычно не перекомпилируют100 процентов их кода при обновлении до уровня нового компилятора или оборудования IBM Z, поэтому код, который не перекомпилирован, не сможет воспользоваться преимуществами функций нового оборудования IBM Z. Теперь с ABO у клиентов есть еще одна возможность снизить загрузку ЦП и эксплуатационные расходы своих критически важных для бизнеса приложений COBOL. Вы можете попробовать ABO с улучшенной, простой в использовании пробной облачной службой ABO [4], не устанавливая ABO в вашей системе.
  • Самый ранний «Оптимизатор COBOL» был разработан Capex Corporation в середине 1970-х годов для COBOL . В данном случае оптимизатор этого типа зависел от знания «слабых мест» стандартного компилятора IBM COBOL и фактически заменял (или исправлял ) разделы объектного кода более эффективным кодом. Код замены может заменить линейный поиск в таблице с помощью бинарного поиска , например , или иногда просто заменить относительно медленный команду с известной быстрее той , которая была в противном случае функционально эквивалентны в его контексте. Эта техника теперь известна как снижение силы . Например, на IBM / 360 АппаратнойCLIинструкция была, в зависимости от конкретной модели, в два-пять раз быстрее CLCинструкции для однобайтовых сравнений. [5] [6]

Преимущества

Основным преимуществом повторной оптимизации существующих программ было то, что запас уже скомпилированных клиентских программ ( объектный код ) можно было улучшить почти мгновенно с минимальными усилиями, уменьшая ресурсы ЦП при фиксированной стоимости (цене проприетарного программного обеспечения ). Недостатком было то, что новые выпуски COBOL, например, потребовали бы (платного) обслуживания оптимизатора, чтобы учесть возможные изменения внутренних алгоритмов COBOL. Однако, поскольку новые выпуски компиляторов COBOL часто совпадают с обновлениями оборудования , более быстрое оборудование обычно более чем компенсирует возврат прикладных программ к их предварительно оптимизированным версиям (до тех пор, пока не будет выпущен поддерживающий оптимизатор).

Другие оптимизаторы

Некоторые оптимизаторы двоичных файлов выполняют сжатие исполняемых файлов , которое уменьшает размер двоичных файлов с помощью общих методов сжатия данных , сокращая требования к хранилищу, а также время передачи и загрузки, но не улучшая производительность во время выполнения. Фактическая консолидация дублирующих библиотечных модулей также снизит требования к памяти.

Некоторые бинарные оптимизаторы используют метрики времени выполнения ( профилирование ) для интроспективного повышения производительности с помощью методов, аналогичных JIT- компиляторам.

Недавние улучшения

Недавно разработанные «бинарные оптимизаторы» для различных платформ, некоторые из которых заявляют о новизне, но, тем не менее, в основном используют те же (или аналогичные) методы, описанные выше, включают:

  • IBM Automatic Binary Optimizer для z / OS (ABO) (2015 г.) [7]
  • Пробная облачная служба IBM Automatic Binary Optimizer для z / OS (ABO) (2020 г.) [8]
  • Оптимизатор двоичного кода Sun Studio [9], который требует предварительной фазы профиля
  • Проектирование и разработка динамического двоичного оптимизатора - от IBM TJ Watson Res. Центр (февраль 2005 г.) [10] [11]
  • QuaC: двоичная оптимизация для быстрой генерации кода времени выполнения на C [12] - (который, по-видимому, включает некоторые элементы JIT)
  • DynamoRIO
  • КОБРА: Адаптивная среда оптимизации двоичных файлов для многопоточных приложений [13]
  • Оптимизатор исполняемых файлов Spike (ядро Unix) [14]
  • "СОЛНЕЧНАЯ" оптимизация программного обеспечения во время компоновки и во время выполнения
  • Dynimize: виртуализация производительности процессора [15]

Смотрите также

  • Бинарная перекомпиляция
  • Двоичный перевод
  • Динамическое устранение мертвого кода

использованная литература

  1. ^ https://www.ibm.com/products/automatic-binary-optimizer-zos
  2. ^ https://www.ibm.com/it-infrastructure/z
  3. ^ https://www.ibm.com/us-en/marketplace/ibm-cobol
  4. ^ https://optimizer.ibm.com
  5. ^ «Архивная копия» (PDF) . Архивировано из оригинального (PDF) 11 июля 2010 года . Проверено 7 января 2010 .CS1 maint: заархивированная копия как заголовок ( ссылка )
  6. ^ http://portal.acm.org/citation.cfm?id=358732&dl=GUIDE&dl=ACM
  7. ^ https://www.ibm.com/products/automatic-binary-optimizer-zos
  8. ^ https://optimizer.ibm.com
  9. ^ http://developers.sun.com/solaris/articles/binopt.html
  10. ^ Duesterwald, Е. (2005). «Дизайн и разработка динамического двоичного оптимизатора». Труды IEEE . 93 (2): 436–448. DOI : 10.1109 / JPROC.2004.840302 .
  11. ^ http://portal.acm.org/citation.cfm?id=1254810.1254831
  12. ^ http://www.eecs.berkeley.edu/Pubs/TechRpts/1994/CSD-94-792.pdf
  13. ^ Ким, Джинпио; Сюй, Вэй-Чун; Ю, Пен-Чунг (2007). «КОБРА: Адаптивная среда оптимизации двоичных файлов для многопоточных приложений». 2007 Международная конференция по параллельной обработке (ICPP 2007) . п. 25. DOI : 10,1109 / ICPP.2007.23 . ISBN 978-0-7695-2933-2.
  14. ^ http://www.cesr.ncsu.edu/fddo4/papers/spike_fddo4.pdf
  15. ^ https://dynimize.com/product
Источник « https://en.wikipedia.org/w/index.php?title=Object_code_optimizer&oldid=1020012979 »