5 초마다 실행되는 앱 내에서 프로파일 링 기능을 사용 중입니다. 그러나 트레이스 뷰의 "Calls + Rec/Total"옵션에서 절반 만 호출합니다. 샘플링 간격으로 1 마이크로 초로 샘플 기반 프로파일 링을 사용하고 있습니다. 이 샘플링 속도로 연주하려고했지만 눈에 띄는 개선은 없었습니다. 예를 들어,보기를 236 초 동안 실행하면 "Call + Rec/Total"옵션에서 47 건의 전화를 받아야하지만 아래 그림과 같이 20 건 밖에 표시되지 않습니다. 누구든지 내가 뭘 잘못하고 있다고 말할 수 있니?Android Traceview (샘플링 기반 추적)에 실제 함수 호출 수가 반영되지 않았습니다.
Tested devices:
Device 1: SmartWatch LG R (Android 6.0.1), observes this problem
Device 2: Samsung Galaxy S2 (Android 5.0.1 Custom ROM), observes this problem
Device 3: Samsung Galaxy S2 (Android 4.4, Custom ROM), works fine
UPDATE : 나는 @kws 내 논의를 기반으로 (원래 안드로이드 5.1.1와) 두 번째 삼성에 안드로이드 4.4.4을 설치하고 현재 샘플링 기반 방법은 그것으로 잘 작동합니다. 그러나 Android 6.0.1이 적용된 smartwatch는 여전히 추적 뷰를 사용하여 이전 방식대로 작동합니다.
업데이트 2 : 나는 샘플링 기반의 방법은 이러한 기능이 두 샘플 사이에 실행하고이 프로파일에서 누락 될 수있을 수 있기 때문에 매우 가볍고 기능을 캡처 해상도가 없습니다 생각합니다. 샘플링 간격으로 마이크로 초 단위로 데이터를 기록하지만, 세부적인 세부 수준까지 도달 할 수 있을지는 의문입니다. 이 주장에 대한 추론은 매우 가벼운 함수를 테스트했을 때 모든 호출이 세 장치 모두에서 잡힌 것이 아니라는 것입니다.
각 메소드 호출을 기록 했습니까? 실제 메소드 호출의 수는 얼마입니까? – kws
프로필러가 각 메서드 호출을 기록 할 것으로 예상합니다. 이 경우 실제 메소드 호출 수는 47입니다.나는 여러 번 실험을 반복했지만 같은 결과를 나는 이유를 모른다. 샘플링 간격은 1 마이크로 초 정도로 매우 낮으므로 모든 메소드 호출을 캡처해야합니다. 또한, 그것은 다른 안드로이드 버전과 다른 장치에서 다르게 동작합니다. – utengr
여기에 뿌리 상태가 어떤 역할을하는지 확실하지 않습니다. – utengr