Android - Dicas de Performance

672 views
642 views

Published on

Dicas de Performance para aplicações android.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
672
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Android - Dicas de Performance

  1. 1. Amélia Pessoa Android Dicas de Performance
  2. 2. Agenda Dicas de Uso Tipos de dados em Java Proguard Otimizações no SQLite StringBuilder, StringBuffer e String Collections Amélia Pessoa
  3. 3. Não faça mais do que o necessário Amélia Pessoa
  4. 4. Não use memória se não há necessidade byte = inteiro com sinal (1 byte) short = inteiro com sinal (2 bytes) int = inteiro com sinal (4 bytes) long = inteiro com sinal (8 bytes) float = ponto flutuante (4 bytes) double = ponto flutuante (8 bytes) char = caractere (2 bytes) boolean = true ou false (1 bit) String = Uma seqüência de caracteres Amélia Pessoa
  5. 5. Conheça bem as bibliotecas Amélia Pessoa
  6. 6. Evite métodos Getters e Setters Amélia Pessoa
  7. 7. Proguard # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): proguard.config=proguard.cfg -optimizationpasses 5 -allowaccessmodification -optimizations !code/simplification/arithmetic,!field/*,! class/merging/*,!code/allocation/variable -keepattributes *Annotation* -keep -keep -keep -keep -keep public public public public public Amélia Pessoa class class class class class * * * * * extends extends extends extends extends android.app.Activity android.app.Application android.app.Service android.content.BroadcastReceiver android.content.ContentProvider
  8. 8. Utilize a sintaxe de loop for aprimorada public void loop1() { int soma = 0; for (int i = 0; i < testArray.length; ++i) { soma += testArray[i].valor; } } public void loop2() { int soma = 0; Test [] localArray = testArray; int len = localArray.length; for (int i = 0; i < len; ++i) { soma += localArray[i].valor; } } public void loop3() { int soma = 0; for (Test a : testArray) { soma += a.valor; } } Amélia Pessoa
  9. 9. Use o banco da melhor forma Amélia Pessoa
  10. 10. Use indexes CREATE TABLE mytable ( a TEXT PRIMARY KEY, -- index created b INTEGER, c TEXT UNIQUE -- index created ); CREATE INDEX statement... Amélia Pessoa
  11. 11. Não use length() em strings longas Exemplos: Troque (WHERE length(str)=0) por (WHERE str=''); (WHERE length(str)==3) pode ser (WHERE str LIKE '___'). Amélia Pessoa
  12. 12. Use IN ao invés de OR "x IN ('A', 'B')" Ao invés de "x='A' OR x='B'" Amélia Pessoa
  13. 13. Mais... Use LIMIT e OFFSET; Use TRIGGERs. Amélia Pessoa
  14. 14. StringBuilder, StringBuffer e String Imutável!!! String s = "estou " ; s += "concatenando "; s += "strings!"; StringBuilder builder = new StringBuilder(); builder.append("estou "); builder.append("concatenando "); builder.append("strings!"); System.out.println(builder.toString()); Amélia Pessoa
  15. 15. Escreva aplicações multithread Amélia Pessoa
  16. 16. Utilize a collection certa para cada problema Amélia Pessoa
  17. 17. Set HashSet: Sem nenhuma sequência ou ordenação. Essa coleção é usada para elementos não-duplicados e a ordem não importa. LinkedHashSet: é uma Hashset com ordenação natural, ou seja, ao inserir na lista e depois iterá-la a ordem é mantida. TreeSet: é um Set com ordenação natural ou especificada. Comumente, se usa elementos com Comparable ou Comparator, para se inserir já de maneira ordenada. Internamente, a TreeSet usa e estrutura de árvore. Amélia Pessoa
  18. 18. List ArrayList: Como o nome já diz, é uma abstração de um array. Tem rápida iteração e rápido acesso rândomico. Os seus elementos possuem uma sequência natural por índice, porém essa coleção não é ordenada. Implementa java.util.List e extende de java.util.Collection. Vector: Igual a ArrayList em todos os sentidos, exceto que suas operações são mais custosas (lentas), pois todos seus métodos são sincronizados. Ou seja, ela é thread-safe. Amélia Pessoa
  19. 19. List / Queue LinkedList: Possui seus elementos em sequência por índice, porém seus elementos são duplamente encadeados uns aos outros. Logo, é fácil inserir e remover do ínicio ao fim dessa coleção. Escolha em casos onde é preciso inserir e deletar rapidamente registros. Porém, a iteração é um pouco mais lenta do que comparado ao ArrayList. Implementa a interface Queue também. PriorityQueue: É uma Queue de prioridades. Os elementos são inseridos com ordenação natural ou especificada dado por um Comparable ou Comparator. Amélia Pessoa
  20. 20. Map HashMap: Mapeamento chave-valor, sem ordenação nenhuma. Aceita uma chave nula, e múltiplos elementos nulos. Hashtable: é a HashMap com duas diferenças: é thread-safe, e não possui elementos e nem chaves nulos. LinkedHashMap: similar ao LinkedHashSet é um HashMap com ordenação natural. Possui mais rápida iteração, porém nas operações de inserir e remover será mais lenta. Possui opção de ordenação natural ou LRU (por último acessado) em seu construtor. TreeMap: similar a TreeSet, é um Map com ordenação natural (caso um Comparable ou Comparator não seja especificado). Amélia Pessoa

×