Оптимизация по результатам профилирования

При разработке встроенных приложений широко используется такой подход, как оптимизация по результатам профилирования (Profile-Guide Optimization) или прикладная оптимизация (Application Specific Optimization).

Типичной областью "приложения" такой оптимизации может служить обычный оператор вида if () goto.... Дело в том, что вследствие конвейерной обработки данных при проверке условия в команде if наилучшим вариантом (с точки зрения быстродействия) является невыполнение этого условия, так как в конвейере уже находятся инструкции, непосредственно следующие за if, и выполнение условия приведет к необходимости очистки конвейера при выполнении перехода и, как следствие, к снижению производительности.

Чтобы оптимизировать код желательно записать в операторе if () такое условие (прямое или обратное), которое менее вероятно при выполнении программы. Но как компилятор может оценить более вероятную ветвь программы? Поскольку в состав большинства современных средств разработки входит утилита профилирования, современные компилятора "научились" анализировать данные, получаемые в результате профилирования. После запуска программы на наборах реальных данных с профилированием компилятор анализирует результаты профилирования и выполняет повторную компиляцию, оптимизированную под данный набор исходных данных.

Отличительные особенности архитектуры МП семейства ADSP-21060

(СуперГарвардская архитектура, подсистема памяти, IOP-процессор, шины,

Программный секвенсор).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: