stringtranslate.com

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

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

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

Примеры

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

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

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

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

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

Последние события

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

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

Ссылки

  1. ^ "Архивная копия" (PDF) . Архивировано из оригинала (PDF) 2010-07-11 . Получено 2010-01-07 .{{cite web}}: CS1 maint: архивная копия как заголовок ( ссылка )
  2. ^ Эванс, Майкл (1982-12-01). «Программная инженерия для среды Cobol». Сообщения ACM . 25 (12): 874–882. ​​doi : 10.1145/358728.358732 . S2CID  17268690.
  3. ^ "IBM Automatic Binary Optimizer for z/OS - Overview". www.ibm.com . 2015. Архивировано из оригинала 2020-10-18 . Получено 2020-05-15 .
  4. ^ "IBM Automatic Binary Optimizer for z/OS Trial Cloud Service". optimizer.ibm.com . 2020. Архивировано из оригинала 2021-01-19 . Получено 2021-10-27 .
  5. ^ "The Binary Code Optimizer". Архивировано из оригинала 2010-07-22 . Получено 2010-01-07 .
  6. ^ Дюстервальд, Э. (2005). «Проектирование и разработка динамического двоичного оптимизатора». Труды IEEE . 93 (2): 436–448. doi :10.1109/JPROC.2004.840302. S2CID  2217101.
  7. ^ Сюй, Чаохао; Ли, Цзяньхуэй; Бао, Тао; Ван, Юнь; Хуан, Бо (2007-06-13). "Оптимизация памяти на основе метаданных в динамическом двоичном трансляторе". Труды 3-й международной конференции по виртуальным средам выполнения - VEE '07 . Ассоциация вычислительной техники. стр. 148–157. doi :10.1145/1254810.1254831. ISBN 978-1-59593630-1. S2CID  15234434. Архивировано из оригинала 2021-10-27 . Получено 2021-10-27 – через ACM Digital Library.
  8. ^ "Архивная копия" (PDF) . Архивировано (PDF) из оригинала 2009-04-19 . Получено 2010-01-07 .{{cite web}}: CS1 maint: архивная копия как заголовок ( ссылка )
  9. ^ Ким, Джинпио; Хсу, Вэй-Чунг; Ю, Пен-Чунг (2007). "COBRA: Адаптивная среда двоичной оптимизации времени выполнения для многопоточных приложений". Международная конференция по параллельной обработке 2007 г. (ICPP 2007) . стр. 25. doi :10.1109/ICPP.2007.23. ISBN 978-0-7695-2933-2. S2CID  15079211.
  10. ^ "Архивная копия" (PDF) . Архивировано из оригинала (PDF) 2010-09-11 . Получено 2010-01-07 .{{cite web}}: CS1 maint: архивная копия как заголовок ( ссылка )
  11. ^ "Оптимизация программного обеспечения "SOLAR" во время компоновки и выполнения". Архивировано из оригинала 2016-02-14.
  12. ^ "Обзор продукта Dynimize". dynimize.com . Архивировано из оригинала 2021-10-25 . Получено 2021-04-26 .
  13. ^ Панченко, Максим; Олер, Рафаэль; Нелл, Билл; Оттони, Гильерме (2019-02-16). "BOLT: Практический двоичный оптимизатор для центров обработки данных и не только". Международный симпозиум IEEE/ACM по генерации и оптимизации кода (CGO) 2019 года . С. 2–14. arXiv : 1807.06735 . doi :10.1109/CGO.2019.8661201. ISBN 978-1-7281-1436-1. S2CID  49869552.