1 / 19

Otimizando Compiladores de AspectJ para Java ME

Otimizando Compiladores de AspectJ para Java ME. Fernando Henrique Calheiros Lopes Centro de Informática – UFPE. 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

denise
Télécharger la présentation

Otimizando Compiladores de AspectJ para Java ME

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Otimizando Compiladores de AspectJ para Java ME Fernando Henrique Calheiros Lopes Centro de Informática – UFPE

  2. 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?

  3. 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 • ...

  4. Linhas de Produtos de Software Artefatos Core Produto X BUILD Produto Y Variabilidades Seleção de Features

  5. Pré-processamento • 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 //#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

  6. 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 Java Principais compiladores: • abc e ajc

  7. AspectJ – A linguagem Pointcuts • Expressões que descrevem pontos no fluxo de execução do programa Advices • Código que pode ser executado em um determinado ponto capturado por um pointcut Inter-type Declarations • Modificam a estrutura estática de uma classe Java • Adicionando atributos e métodos • Mudando a hierarquia de classes

  8. Metodologia • Análise de tamanho: quantificação • Inspeção individual: qualificação • Discussão: Propor melhorias, provar corretude e implementar • Resultados: quantificar ganho obtido

  9. Overhead adicionado por AspectJ

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. Ganho no tamanho

  17. 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.

  18. 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

  19. 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.

More Related