본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Traceview 에 대해 알아보자. ( Profilinig )

by 돼지왕 왕돼지 2012. 2. 15.
반응형


안녕하세요 돼지왕 왕돼지입니다.
안드로이드의 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 권한이 필요합니다.
  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 : 소비시간/호출횟수
 
 
로그인 없이 추천 가능합니다. 손가락 꾸욱~

반응형

댓글