Android 앱에서 병목 현상이 발생한 위치를 찾아야합니다.
어떤 프로파일 링 도구 또는 기술을 사용할 수 있습니까?
Android 앱에서 병목 현상이 발생한 위치를 찾아야합니다.
어떤 프로파일 링 도구 또는 기술을 사용할 수 있습니까?
답변:
Traceview를 사용할 수 있습니다. 이상적이지는 않지만 작동합니다. 이 문서에서는 사용 방법을 설명합니다.
DDMS는 Android에 가장 적합합니다. 기본적으로 ADT 플러그인에 포함됩니다.
자세한 예제가 포함 된 이 문서는 DDMS를 다루는 데 도움이 될 것입니다.
메모리 분석의 경우 Eclipse MAT를 사용해보십시오.
무엇을 테스트할지에 따라 다릅니다.
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에 대한 튜토리얼도 찾을 수 있습니다 .
http://developer.android.com/training/articles/perf-tips.html 에서 권장하는 또 다른 도구 는 Caliper : https://code.google.com/p/caliper/ 입니다. (사용한 적이 없어서 잘 모르겠습니다.)