Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de...
-
Upload
kauany-pesqueira -
Category
Documents
-
view
215 -
download
2
Transcript of Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de...
![Page 1: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/1.jpg)
Otimizando Compiladores de AspectJ para Java ME
Fernando Henrique Calheiros LopesCentro de Informática – UFPE
![Page 2: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/2.jpg)
Motivação
Jogos Móveis: Projeções para 2011 no mercado de jogos
de celulares: 7 bilhões de dólares movimentados
Um dos mercados mais promissores do entretenimento digital
Problema: Grande variedade de aparelhos Como tratar as variabilidades em nível de
código de um jogo entre os diversos aparelhos?
![Page 3: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/3.jpg)
Cenário de Jogos Móveis•Variações em...
• tela,• teclado,• memória,• APIs...
• Baixíssimo time to market• Vários idiomas• Mudanças entre operadoras• ...
![Page 4: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/4.jpg)
Linhas de Produtos de Software
Artefatos Core
Variabilidades
BUIL
D Produto X
Produto Y
Seleção de Features
![Page 5: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/5.jpg)
Pré-processamento
//#if device_graphics_canvas_nokiaui public class MainCanvas extends FullCanvas{
//#elif device_graphics_canvas_midp2 || device_graphics_canvas_siemens//# public class MainCanvas extends GameCanvas {
//#elif sku_id_se1//# public class MainCanvas extends Canvas implements CommandListener {
//#else
//# public class MainCanvas extends Canvas {
//#endif
• Padrão da indústria para tratar variações de código• Tags de pré-processamento features• Vantagem: Não adiciona overhead no bytecode• Problema: Código emaranhado
![Page 6: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/6.jpg)
AspectJ
Principal vantagem: Código de cada família de aparelhos
separados do código comum a todos os aparelhos
Principal desvantagem: Adiciona overhead aos classfiles de JavaPrincipais compiladores: abc e ajc
![Page 7: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/7.jpg)
AspectJ – A linguagem
Pointcuts Expressões que descrevem pontos no fluxo de
execução do programaAdvices Código que pode ser executado em um
determinado ponto capturado por um pointcutInter-type Declarations Modificam a estrutura estática de uma classe
Java Adicionando atributos e métodos Mudando a hierarquia de classes
![Page 8: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/8.jpg)
Metodologia
Análise de tamanho: quantificação Inspeção individual: qualificação Discussão: Propor melhorias, provar
corretude e implementar Resultados: quantificar ganho obtido
![Page 9: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/9.jpg)
Overhead adicionado por AspectJ
![Page 10: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/10.jpg)
Inspeção Individual
As construções de AspectJ utilizadas nos 2 jogos avaliados pelo projeto FLiP foram inspecionadas A partir da inspeção do bytecode resultante do uso das mesmas foram identificados os pontos onde cada compilador adiciona overhead Essa inspeção indicou os motivos por trás do overhead
![Page 11: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/11.jpg)
Otimizações sugeridas Baseando-se nos dados da inspeção, foram sugeridas
um conjunto de otimizações para o compilador abc: Não relacionada a aspectos:
Remover <clinit>() vazios Atributos com inicialização:
Mover a inicialização dos atributos para a classe alvo
Métodos: Colocar o corpo de métodos inter-type na
própria classe alvo Advices:
Remover chamadas desnecessárias a aspectOf() Remover métodos accessors quando os
membros puderem ser acessados diretamente
![Page 12: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/12.jpg)
Otimizações Implementadas Remover chamadas desnecessárias a
aspectOf() Colocar o corpo de métodos inter-type na
própria classe alvo Otimizações escolhidas baseado na
intuição de que trariam o maior ganho 1º passo: provar a corretude 2º passo: implementar
![Page 13: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/13.jpg)
Prova de corretude Baseada em leis de programação [Col05] Foi mostrado como sair do que o abc gera
para o que as leis denotam
![Page 14: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/14.jpg)
Implementação Estudada a arquitetura do abc Enunciados algoritmos para implementar
as duas otimizações Implementadas as duas otimizações
como transformações do framework Soot Se encaixam no abc
![Page 15: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/15.jpg)
Resultados Exemplos utilizados na inspeção foram
mostrados com as otimizações Tamanho dos builds foi comparado
novamente Com cada otimização separadamente Com ambas habilitadas
200 bytes a menos do que a soma dos ganhos individuais
Diminuição de 48% do overhead adicionado por AspectJ
![Page 16: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/16.jpg)
Ganho no tamanho
![Page 17: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/17.jpg)
Trabalhos relacionados [Cor07] Eduardo Santos Cordeiro. Otimizações na compilação de adendos de contorno em programas orientados por aspectos. Master’s thesis, Universidade Federal de Minas Gerais, 2007. [Kuz04] Sascha Kuzins. Efficient implementation of around-advice for the aspectbench compiler. Master’s thesis, Oxford University, 2004.
![Page 18: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/18.jpg)
Trabalhos futuros Provar que as outras otimizações propostas não implementadas preservam o comportamento Implementar as outras otimizações não implementadas Analisar as construções de AspectJ que não estavam no escopo deste estudo Implementar as otimizações no ajc Analisar o impacto de construções que interferem umas com as outras Avaliar o impacto das otimizações propostas com benchmarks de performance e memória
Intuitivamente espera-se obter um ganho em ambos
![Page 19: Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE.](https://reader033.fdocumentos.tips/reader033/viewer/2022051519/570638491a28abb8238f48b3/html5/thumbnails/19.jpg)
Referências Site do abc: www.aspectbench.org Site do ajc: www.eclipse.org/aspectj Site do Soot: http://www.sable.mcgill.ca/soot/ [Col05] Leonardo Cole. Deriving refactorings for aspectj. Master’s thesis, Informatics Center, Federal Universisty of Pernambuco, Recife, Brazil, February 2005.