Google Play에서 일부 타사 앱을 설치했습니다. 일부 연구 목적을 위해, 나는 그 애플 리케이션을 프로파일 링해야합니다.타사 앱을 프로파일하는 방법은 무엇입니까?
예를 들어 "onCreat()" "onStartCommand()" "onStopped()"와 같은 일부 콜백 함수가 시작되고 완료되는 시간을 프로파일 링합니다.
단서가 있습니까?
Google Play에서 일부 타사 앱을 설치했습니다. 일부 연구 목적을 위해, 나는 그 애플 리케이션을 프로파일 링해야합니다.타사 앱을 프로파일하는 방법은 무엇입니까?
예를 들어 "onCreat()" "onStartCommand()" "onStopped()"와 같은 일부 콜백 함수가 시작되고 완료되는 시간을 프로파일 링합니다.
단서가 있습니까?
오픈 소스 응용 프로그램을 선택하고 소스에서 디버그 모드로 컴파일 한 다음 결과를 프로파일 링하십시오.
디버거에서 모든 것을 실행할 수 있다면 Ctrl-C 또는 일시 중지를 누르거나 콜백 중 하나에있는 한 제 3 자 코드에 디버그 정보가 있는지 여부는 중요하지 않습니다 스택에 콜백을 표시합니다. 그래서
<some system/library routines called by your callback>
...
YourCallbackCode
...
<the 3rd-party routines>
...
YourTopLevelCode
...
main()
당신이 10 개 또는 20 등 샘플, YourCallbackCode
스택에 표시되는 시간의 비율을 가지고가는 경우에 좋은 추정치입니다 : 그것은 당신의 콜백에있을 때
스택 추적은 다음과 같이 보일 것이다 시간의 몇 분의 1을 책임진다. (매우 작은 경우가 아니면 코드에 병목 현상이 발생하지 않습니다.)
예를 들어 스택 샘플의 50 %에있는 경우 약 50 %의 시간이 소요됩니다. 따라서 시간을 반으로 줄이면 (예 : 적은 수의 new
), 100/75 = 1.33 = 33 %의 경우, 50 % 또는 전체 25 %의 절반을 절약 할 수 있습니다.
콜백 코드의 어떤 라인이 많은 시간을 소비하는지 볼 수 있습니다.