반응형
안녕하세요 돼지왕 왕돼지입니다.
안드로이드의 DDMS 에서 지속적으로 좋은 기능들을 제공하려고 하고 있습니다.
그 중 하나가 Profiling ( 프로파일링 ) 에 사용되는 TraceView ( 트레이스 뷰 ) 인데요.
어떤 함수가 호출될 때 소요되는 시간을 볼 수 있는 좋은 도구입니다.
이 Traceview 에 대해 오늘 한번 알아보고자 합니다.
TraceView 가 뭐하는 건가요?
- 트레이스뷰로는 모든 함수의 초기화와 각 메소드에서 머문 시간이 기록되며, 이것을 보기 좋게 정렬해서 보여주는 View 입니다.
어떻게 사용하나요?
- DDMS 에서 [Devices] 의 [Start Method Profiling] 버튼을 클릭하고, 어떤 Operation 을 해줍니다.
Operation 이 완료되면, [Stop Method Profiling] 버튼을 클릭하고, 기다립니다.
TraceView 가 짜잔 하고 뜹니다.
- 트레이스뷰는 소스코드에서 특정 코드구간에 대해서 행해지도록도 할 수 있습니다. 방법은 다음과 같다.
1. import android.os.Debug;
2. 정보수집 시작시점에서 Debug.startMethodTracing("파일이름");
-> SDcard에 저장하므로, external storage write 권한이 필요합니다.
-> SDcard에 저장하므로, external storage write 권한이 필요합니다.
3. 정보수집 완료시점에서 Debug.stopMethodTracing();
주의사항!!
- 트레이스뷰 코드가 있을 때, 가상머신은 현저하게 느려집니다. 결과값은 상대적인 분석값이지 절대적이지 않습니다.
분석 방법
( 1, 2 는 소스레벨에서 trace 한 경우에만 해당됩니다. )
1. adb pull sdcard/파일이름.trace 파일이름.trace 로 소스레벨에서 trace 한 파일을 불러옵니다.
2. traceview 파일이름.trace (pathname을 꼭 붙여야 된다는 의견도 있습니다만.. )
3. 위쪽 그래프에서 보고싶은 부분을 마우스로 늘려서 확인합니다.
4. 아래쪽 그래프는 가장 많은 시간을 소비한 함수가 가장 위에 배치하여 정렬되어 있습니다.
cf) 소비시간이 정확하지는 않을 가능성이 높습니다. (디버깅을 함께 한 것과 같기 떄문에..)
하지만, 그 함수가 포함하는 비중에 대해서는 확실하게 감을 잡을 수 있죠.
분석값의 의미
incl% : 함수와 함수가 호출한 함수에서 소비한 총 시간 ( chain 된 total 시간 )
excl%: 해당 함수 자체에서만 소비한 시간
Calls + Recursive calls : 첫째 수치는 외부에서 함수를 호출한 횟수.
둘째 수치는 함수가 스스로를 호출한 횟수 ( resursive )
Time/Call : 소비시간/호출횟수
로그인 없이 추천 가능합니다. 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] AppWidget Sample Code ( Example ). (0) | 2012.02.15 |
---|---|
[Android/안드로이드] Service 생명주기. (8) | 2012.02.15 |
[Android/안드로이드] Emulator의 /system/app 폴더에 apk 올리기. (0) | 2012.02.15 |
[Android/안드로이드] OpenGL 로 삼각형 그리기 (0) | 2012.02.15 |
[Android/안드로이드] OpenGL Primitives (0) | 2012.02.15 |
댓글