В современном мире существует огромное количество программного обеспечения, написанного на C++. Считается, что данный язык программирования является очень быстрым. Тем не менее существуют сферы, требующие от программы высокой производительности, которая недостижима лишь удачным выбором языка.
Написать код с минимальной асимптотической сложностью - не значит написать оптимальный с точки зрения задержки код: нередко решающим фактором является компилятор, а именно его оптимизации, производящиеся над программой.
В сферах, нуждающихся в высокопроизводительном коде, есть потребность в применении дополнительных оптимизаций. С этой задачей обычно достаточно хорошо справляется компилятор, предоставляющий, например, флаги компиляции [1]. При включенных оптимизационных флагах компиляции часто достигается удовлетворяющий пользователя результат, однако далеко не всегда этого достаточно.
Одной из самых важных оптимизаций компилятора является встраивание функций [2] - замена вызова функции непосредственно телом функции. Данная работа направлена на создание программной системы, которая предоставляет пользователям возможность оптимизировать задержки в C++- приложениях путем регулируемого агрессивного встраивания функций.
Проведено исследование статей на смежные темы и выявлены различные подходы к встраиванию функций.
Основным результатом данной работы является реализованная программная система, позволяющая оптимизировать среднее время выполнения программ на С++ при помощи агрессивного встраивания функций. Широкий набор параметров для регулирования агрессивности является существенным преимуществом разработанного решения.
На базе созданной системы произведены измерения среднего времени работы нескольких тестовых проектов. На одном из тестовых проектов выявлено значительное ускорение до 15%. Произведенные измерения демонстрируют возможность ускорения программ при помощи использования разработанной системы.