Оптимизатор объектного кода - Object code optimizer
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
An оптимизатор объектного кода, иногда также известный как оптимизатор после прохода или, для небольших участков кода, оптимизатор глазка, берет выходные данные с этапа компиляции исходного языка - объектный код или двоичный файл - и пытается заменить идентифицируемые части кода кодом замены, который больше алгоритмически эффективный (обычно повышенная скорость).
Примеры
- "IBM Автоматический двоичный оптимизатор для z / OS[1]"(ABO) была представлена в 2015 году как передовая технология, призванная оптимизировать производительность КОБОЛ приложения на IBM Z[2] мэйнфреймы без необходимости перекомпиляции исходного кода. Он использует передовую технологию оптимизации, включенную в последнюю версию Enterprise COBOL.[3]. ABO оптимизирует скомпилированный двоичные файлы не влияя на логику программы. В результате приложение работает быстрее, но поведение остается неизменным, поэтому усилия по тестированию могут быть сокращены. Клиенты обычно не перекомпилировать 100 процентов их кода при обновлении до нового уровня компилятора или оборудования IBM Z, поэтому код, который не перекомпилирован, не сможет воспользоваться преимуществами функций нового оборудования IBM Z. Теперь с ABO у клиентов есть еще одна возможность уменьшить ЦПУ затраты на использование и эксплуатационные расходы критически важных для бизнеса приложений COBOL. Вы можете попробовать ABO с улучшенной, простой в использовании облачной службой ABO Trial Cloud. [4] без установки ABO в вашу систему.
- Самый ранний "Оптимизатор COBOL" был разработан Capex Corporation в середине 1970-х для КОБОЛ. Этот тип оптимизатора зависел в данном случае от знания «слабых мест» стандартного компилятора IBM COBOL и фактически заменил (или залатанный ) разделы объектного кода с более эффективным кодом. Код замены может заменить линейный поиск в таблице с бинарный поиск например, а иногда просто заменить относительно медленную инструкцию известной более быстрой, которая в остальном функционально эквивалентна в своем контексте. Этот метод теперь известен как снижение силы. Например, на IBM / 360 аппаратное обеспечение
CLI
инструкция была, в зависимости от конкретной модели, в два-пять раз быстрее, чемCLC
инструкция для однобайтовых сравнений.[5][6]
Преимущества
Основным преимуществом повторной оптимизации существующих программ было то, что запас уже скомпилированных клиентских программ (объектный код ) можно было улучшить почти мгновенно с минимальными усилиями, уменьшив ЦПУ ресурсы по фиксированной стоимости (цена проприетарное программное обеспечение ). Недостатком было то, что новые выпуски COBOL, например, потребовали (платного) обслуживания оптимизатора, чтобы учесть возможные изменения внутренних алгоритмов COBOL. Однако, поскольку новые выпуски компиляторов COBOL часто совпадают с аппаратное обеспечение обновления, более быстрое оборудование обычно более чем компенсирует возврат прикладных программ к их предварительно оптимизированным версиям (до тех пор, пока не будет выпущен поддерживающий оптимизатор).
Другие оптимизаторы
Некоторые бинарные оптимизаторы делают исполняемое сжатие, что снижает размер двоичных файлов с использованием общих Сжатие данных методы, уменьшающие требования к хранилищу и время передачи и загрузки, но не улучшающие производительность во время выполнения. Фактическое объединение дублирующих библиотечных модулей также снизит требования к памяти.
Некоторые бинарные оптимизаторы используют время выполнения метрики (профилирование ) для интроспективного повышения производительности с помощью методов, аналогичных JIT компиляторы.
Последние достижения
Совсем недавно были разработаны «бинарные оптимизаторы» для различных платформ, некоторые утверждали, что новизна но, тем не менее, с использованием тех же (или аналогичных) методов, описанных выше, включают:
- IBM Автоматический двоичный оптимизатор для z / OS (ABO) (2015)[7]
- IBM Пробная облачная служба автоматического двоичного оптимизатора для z / OS (ABO) (2020)[8]
- Оптимизатор двоичного кода Sun Studio[9] - что требует профиль фаза заранее
- Разработка и проектирование динамического двоичного оптимизатора - от IBM T. J. Watson Res. Центр (февраль 2005 г.)[10][11]
- QuaC: двоичная оптимизация для быстрой Генерация кода во время выполнения в C[12] - (который, похоже, включает некоторые элементы JIT)
- DynamoRIO
- КОБРА: Адаптивная среда оптимизации двоичных файлов для многопоточных приложений[13]
- Spike Executable Optimizer (ядро Unix)[14]
- "СОЛНЕЧНАЯ" оптимизация программного обеспечения во время компоновки и во время выполнения
Смотрите также
Рекомендации
- ^ https://www.ibm.com/products/automatic-binary-optimizer-zos
- ^ https://www.ibm.com/it-infrastructure/z
- ^ https://www.ibm.com/us-en/marketplace/ibm-cobol
- ^ https://optimizer.ibm.com
- ^ http://www.bitsavers.org/pdf/ibm/360/A22_6825-1_360instrTiming.pdf
- ^ http://portal.acm.org/citation.cfm?id=358732&dl=GUIDE&dl=ACM
- ^ https://www.ibm.com/products/automatic-binary-optimizer-zos
- ^ https://optimizer.ibm.com
- ^ http://developers.sun.com/solaris/articles/binopt.html
- ^ Дюстервальд, Э. (2005). «Дизайн и разработка динамического двоичного оптимизатора». Труды IEEE. 93 (2): 436–448. Дои:10.1109 / JPROC.2004.840302.
- ^ http://portal.acm.org/citation.cfm?id=1254810.1254831
- ^ http://www.eecs.berkeley.edu/Pubs/TechRpts/1994/CSD-94-792.pdf
- ^ Ким, Джинпио; Сюй, Вэй-Чун; Ю, Пен-Чунг (2007). «КОБРА: Адаптивная среда двоичной оптимизации для многопоточных приложений». 2007 Международная конференция по параллельной обработке (ICPP 2007). п. 25. Дои:10.1109 / ICPP.2007.23. ISBN 978-0-7695-2933-2.
- ^ http://www.cesr.ncsu.edu/fddo4/papers/spike_fddo4.pdf