Слайд 2Цели проекта
Реализовать решение для оптимизации работы скомпилированного Java-кода.
Проведя сравнительный анализ с другими
разработками, скомпоновать и интегрировать решение в проект Apache Harmony
http://harmony.apache.org
Слайд 3Что такое оптимизация методом профилирования значений?
Весь процесс состоит из нескольких этапов:
Запуск исходного
приложения со сбором статистической информации об использовании переменных
Анализ собранных данных, принятие решения о возможных оптимизациях
Перекомпилирование кода с применением выбранных методов оптимизации
Слайд 4Профилируемое исполнение
Для сбора информации об используемых в процессе исполнения переменных применяются профайлеры
Их
задача – выявить часто встречаемые значения, применяя один из алгоритмов:
TVN
Сбор всех значений переменной с последующей сортировкой по количеству встреч
Слайд 5Анализ собранных данных
Для эффективной оптимизации представляют интерес
«Горячие» методы
Методы, где значения переменных можно
описывать как квазиконстанты
Операторы ветвления (условные переходы)
Слайд 6Методы оптимизации
Перекомпоновка кода для лучшего предсказания переходов
if ( cond ) if (
!cond )
oper1; => oper2;
else else
oper2; oper1;
Специализация кода
if ( var == _const )
doSpecializedCode();
else
doUsualCode();
Слайд 7Контрольные точки
Выработать схему проекта сделано
Имплементировать профайлер 01.01.07
Выбор алгоритма сделано
Его реализация сделано
Отладка, проверка
на тестах сделано
Интегрирование в существующие компиляторы в процессе
Реализация анализатора статистики 15.02.07
Реализация модуля перекомпилирования 25.03.07
Тестирование, написание документации к проекту. Интегрирование в Apache Harmony 01.06.07
Слайд 8Список литературы
“Value profiling and optimization”,
Brad Calder, Peter Feller
“Optimizing dynamically dispatched calls”,
David
Ungar
“Profile-guided receiver class prediction”,
David Grove, Jeffrey Dean
http://harmony.apache.org