내 Android 앱을 어떻게 프로파일 링 할 수 있습니까? [닫은]


93

Android 앱에서 병목 현상이 발생한 위치를 찾아야합니다.

어떤 프로파일 링 도구 또는 기술을 사용할 수 있습니까?


Android에 익숙하지 않습니다. 인터럽트 할 수있는 디버거에서 앱을 실행할 수 있습니까? 그렇다면이 방법이 작동합니다 : stackoverflow.com/questions/375913/…
Mike Dunlavey

음, 흥미 롭군요. 약간의 노동 집약적이지만 더 눈에 띄는 성능 문제를 발견하는 데 잠재적으로 유용합니다. 감사.
teedyay

나는 당신이 그렇게 생각할 수있는 방법을 이해합니다 : stackoverflow.com/questions/2624667/…
Mike Dunlavey

요즘에는 Eclipse 내에서 멋진 프로파일 링을 할 수 있습니다. TraceView 등의 독립 실행 형 / 수동 실행은 잊어 버리십시오. 자세한 내용과 함께 이에 대한 블로그 기사를 작성하고 싶습니다. 더 자세한 정보가 필요하면 저를 핑하십시오.
KarolDepka 2013

2
TraceView 또는 DDMS보다 나은 것이 있다고 제안합니다. 뭔데?
Peri Hartman

답변:


37

Traceview를 사용할 수 있습니다. 이상적이지는 않지만 작동합니다. 이 문서에서는 사용 방법을 설명합니다.


2
이것을 실행하면 명령 줄 버전이 더 이상 사용되지 않는다는 메시지가 표시되고 종료됩니다. 새로운 방법은 무엇입니까?
gonzobrains 2013 년

18

DDMS는 Android에 가장 적합합니다. 기본적으로 ADT 플러그인에 포함됩니다.

자세한 예제가 포함 된 문서는 DDMS를 다루는 데 도움이 될 것입니다.


메모리 분석의 경우 Eclipse MAT를 사용해보십시오.


4
DDMS에 대한 Android 문서 : developer.android.com/tools/debugging/ddms.html
sulai

11

무엇을 테스트할지에 따라 다릅니다.

Android 용 애플리케이션을 개발하는 경우 TimingLogger 클래스를 사용해보십시오. TimingLogger 도우미 클래스의 사용법을 설명하는 이 문서 를 살펴보십시오 .

아주 좋은 도구는 JMeter 이며 Android 용 플러그인 도 있습니다.

외부 도구를 사용하지 않고 매우 표준적인 방법으로 경과 시간을 측정하려면 System.nanoTime ()을 사용해야합니다. currentTimeMillis는 컴퓨터 시계가 완벽하지 않기 때문에 (때때로 모두 수정해야 함) 벽시계 시간과 시간을 측정하므로 시스템 시계에 작은 수정을 실행하고 지속적으로 발행하는 프로세스가 있기 때문에 사용해서는 안됩니다. 윤초 보정은 말할 것도 없습니다.

currentTimeMillis가 자주 사용되지만 경과 시간과 타이밍을 측정하는 것은 여전히 ​​올바르지 않습니다. 어쨌든 호출에 약간의 시간이 걸리기 때문에 매우 작은 간격으로 정확하게 시간을 예상해서는 안됩니다. 그러나 그것은 Android에서 작동하는 문제가 아닙니다.

예를 들어 보겠습니다.

long startTime = System.nanoTime();

// run/call the method

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

이 무료 라이브러리도 살펴볼 수 있습니다 : http://jetm.void.fm/ .

JMeter에 대한 튜토리얼도 찾을 수 있습니다 .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.