Адаптивная оптимизация
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Адаптивная оптимизация — это метод в информатике , который выполняет динамическую перекомпиляцию частей программы на основе текущего профиля выполнения. При простой реализации адаптивный оптимизатор может просто найти компромисс между своевременной компиляцией и интерпретацией инструкций . На другом уровне адаптивная оптимизация может использовать преимущества локальных данных для оптимизации удаленных ветвей и использования встроенного расширения для снижения стоимости вызовов процедур.
Рассмотрим гипотетическое банковское приложение, которое обрабатывает транзакции одну за другой. Этими транзакциями могут быть чеки, депозиты и большое количество более непонятных транзакций. Когда программа выполняется, фактические данные могут состоять из клиринга десятков тысяч чеков без обработки ни одного депозита и без обработки ни одного чека с поддельным номером счета. Адаптивный оптимизатор скомпилирует ассемблерный код для оптимизации для этого распространенного случая. Если вместо этого система начнет обрабатывать десятки тысяч депозитов, адаптивный оптимизатор перекомпилирует ассемблерный код для оптимизации нового общего случая. Эта оптимизация может включать встраивание кода.
Примеры адаптивной оптимизации включают HotSpot HP и систему Dynamo . [1]
В некоторых системах, особенно в виртуальной машине Java [ нужна ссылка ] , выполнение диапазона инструкций байт-кода может быть доказуемо обращено вспять. Это позволяет адаптивному оптимизатору делать рискованные предположения о коде. В приведенном выше примере оптимизатор может предположить, что все транзакции являются чеками и все номера счетов действительны. Когда эти предположения оказываются неверными, адаптивный оптимизатор может «перейти» в допустимое состояние, а затем правильно интерпретировать инструкции байт-кода.
См. также [ править ]
Ссылки [ править ]
Внешние ссылки [ править ]
- CiteSeer за «Адаптивную оптимизацию в JVM Халапеньо (2000)» Мэтью Арнольда, Стивена Финка, Дэвида Гроува, Майкла Хинд, Питера Ф. Суини. Содержит ссылки на полную версию статьи в различных форматах.