Адаптивная оптимизация

редактировать

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

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

Примеры адаптивной оптимизации включают HotSpot и систему HP Dynamo.

. В некоторых системах, особенно в виртуальной машине Java, выполнение в диапазоне инструкции байт-кода могут быть доказуемо обратными. Это позволяет адаптивному оптимизатору делать рискованные предположения относительно кода. В приведенном выше примере оптимизатор может предположить, что все транзакции являются чеками и все номера счетов действительны. Когда эти предположения оказываются неверными, адаптивный оптимизатор может «раскрутиться» до допустимого состояния и затем правильно интерпретировать инструкции байтового кода.

См. Также

  • icon Портал компьютерного программирования

Ссылки

Внешние ссылки

Последняя правка сделана 2021-06-10 00:07:39
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте