Глобальный оптимизатор для приложений на платформе .NET

advertisement
Глобальный оптимизатор для
.NET приложений
Серебрянский Андрей 544гр.
Научный руководитель: Дмитрий Степанович Ломов
Рецензент: Дмитрий Юрьевич Булычев
Постановка задачи
Повторное использование кода



Структурное программирование
Объектно-ориентированиое программирование
Программы строятся из компонент




COM
Java
.NET
Недостатки




Чрезмерная абстракция
Параметризация компонент
Конечное приложение зачастую не использует всю
функциональность компоненты
Оптимизация приложения
Идея: оптимизировать приложение как набор
взаимодействующих компонент





Гибкость. Богатый набор настроек для управления оптимизацией
Расширяемость. Возможность модификации представленных
алгоритмов
Эффективность.
Безопасность. Оптимизации не должны менять семантику
программы
Преимущества данного подхода




Отсутствует необходимость в исходном коде
Отсутствует необходимость явно указывать часть входных
параметров для методов
Глобальный анализ позволяет учесть все зависимости и значения
глобальных переменных
Существующие работы

Partial Evaluation of an Object-Oriented Imperative Language
(Morten Marquard, Bjarne Steensgaard, Department of Computer Science, University
of Copenhagen)

COMPOSE (Ulrik P. Schultz, Julia L. Lawall, Charles Consel, Gilles Muller)

CILPE (Andrei M. Chepovsky, Andrei V. Klimov)
 Offline смешанный вычислитель
 Поддерживает объекты, объекты с частично известными
полями, массивы и простые типы
Преимущества данной работы
 Оптимизация применяется в контексте всего приложения
 Используется гибридный смешанный вычислитель
 Реализованы вспомогательные алгоритмы для улучшения
периода связывания (binding-time improvements)

Обзор реализации

Проектная модель и менеджер алгоритмов



Глобальный анализ




Настройки оптимизации.
Интерфейс расширения. Пользователи могут
модифицировать реализованные алгоритмы либо
использовать свои реализации
Приоритет методов. Эвристика
Анализ значений глобальных переменных
Оптимизатор
Менеджер хранения
Оптимизатор

Гибридный смешанный вычислитель



Binding-time improvements




Поливариантное разделение переменных
Объекты, частично известные структуры и
массивы, простые типы
Пример: (x+y)+1 и (x+1)+y
Раскрутка циклов
Кэширование
Предотвращение зацикливания
Результаты тестирования

Тестирование проводилось на
многокомпонентных приложениях, которые
используют математическую библиотеку для
вычислений
Название теста
Ratio
matrix_multiplication
1.61
cos
1.83
ray_tracing
1.45
chebyshev
1.1
fft
0.96
Выводы



Создан оптимизатор для приложений на
платформе .NET
Тестирование показало его достаточную
эффективность
Дальнейшие планы



Поддержка коллекций
Де-виртуализация
Использование особенностей JIT компилятора
Download