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