Como posso criar o perfil de meu aplicativo Android? [fechadas]

93

Preciso descobrir onde estão os gargalos em meu aplicativo Android.

Quais ferramentas ou técnicas de criação de perfil posso usar?

teedyay
fonte
Não estou familiarizado com o Android. Você pode executar o aplicativo em um depurador que pode ser interrompido? Em caso afirmativo, este método funciona: stackoverflow.com/questions/375913/…
Mike Dunlavey
Mmm, interessante. Um pouco trabalhoso, mas potencialmente útil para detectar os problemas de desempenho mais evidentes. Obrigado.
terça
Eu entendo como você pode pensar assim: stackoverflow.com/questions/2624667/…
Mike Dunlavey,
Hoje em dia você pode fazer bons perfis dentro do Eclipse. Esqueça o lançamento autônomo / manual do TraceView, etc. Espero escrever um artigo no blog sobre isso, com mais detalhes. Envie-me um ping se precisar de mais detalhes.
KarolDepka
2
Você sugere que há algo melhor do que TraceView ou DDMS. O que é isso?
Peri Hartman

Respostas:

37

Você pode usar o Traceview. Está longe do ideal, mas funciona. Este artigo descreve como usá-lo.

cimento
fonte
2
Quando eu executo isso, ele diz que a versão da linha de comando está obsoleta e então sai. Qual é o novo método?
gonzobrains
18

DDMS é o melhor para Android. Por padrão, ele é incluído no plug-in ADT.

Este documento com exemplo detalhado deve ajudá-lo a lidar com o DDMS.


Para análise de memória, experimente Eclipse MAT

Shahul3D
fonte
4
Documentos Android sobre DDMS: developer.android.com/tools/debugging/ddms.html
sulai
11

Depende do que você vai testar.

Caso você desenvolva aplicativos para Android, experimente a classe TimingLogger. Dê uma olhada em neste artigo que descreve o uso da classe auxiliar TimingLogger.

Uma ferramenta muito boa é o JMeter e há um plugin para Android .

se você não quiser usar ferramentas externas, mas de uma forma bem padronizada, para medir o tempo decorrido, deve usar System.nanoTime (). Não se deve usar o currentTimeMillis, pois mede o tempo do relógio de parede e, como nenhum relógio de computador é perfeito (todos ocasionalmente precisam ser corrigidos) há um processo que roda e emite continuamente pequenas correções no relógio do sistema. Sem mencionar a correção do segundo bissexto.

Embora currentTimeMillis seja freqüentemente usado, ainda é incorreto medir o tempo decorrido e o tempo. De qualquer forma, como a chamada leva algum tempo, você não deve esperar cronometrar corretamente intervalos muito pequenos. Mas isso não deve ser um problema para trabalhar com Android.

Vou te mostrar um exemplo:

long startTime = System.nanoTime();

// run/call the method

long endTime = System.nanoTime();
long diff = endTime - startTime ;
System.out.println("Elapsed milliseconds: " + diff /1000000);

Você também pode dar uma olhada nesta biblioteca gratuita: http://jetm.void.fm/ .

Você também pode encontrar o tutorial do JMeter .

David
fonte