Android Traceview에서 추적 기반 프로파일 링 메소드와 샘플링 기반 프로파일 링 메소드의 차이점은 무엇입니까? 나는 추적 기반이 더 정확하다고 생각했지만, 특히 함수가있는 다른 호출이있는 경우 실제 CPU 시간을 왜곡 할 수있는 것처럼 보입니다.Android 추적 기반 및 샘플링 기반 메소드 프로파일 링의 차이점 및보고 된 CPU 시간에 미치는 영향
예를 들어, A-1 및 A-2와 같은 두 가지 구현이있는 함수 A를 평가하고 싶습니다.
- A-1에는 A-1-1과 같은 하나 이상의 함수 호출이 있습니다.
- A-2에는 A-1-1과 같은 더 많은 함수 호출이 있지만 A-1-1에는 A-1-1-1과 같은 함수 호출이 하나 있습니다.
이제는 트레이스 기반 프로파일 링이 하나의 추가 함수 A-1-1-1을 추적해야하고이 추가 CPU 사용량이 CPU 시간으로보고되기 때문에 A-2에 더 높은 값을보고한다고 생각합니다. A-2의 내가 맞습니까?
그래서 문제는 트레이스 기반 메소드가 부모 함수의 실제 CPU 시간을보고 할 때 하위 메소드를 추적 할 때 cpu 오버 헤드 시간을 고려합니까?
한편 샘플링 기반 방법의 문제점은 매우 가벼운 기능을 잡지 못할 수도 있다는 것입니다. 함수에 0.2 밀리 초의 CPU 시간이 걸리고 샘플링 간격이 1 밀리 초이면 어떻게 될까요? 나는 그것으로 약간의 실험을했고 가벼운 함수 호출을 잡을 수 없다. 차이점에 대한 아이디어 또는 문서 참조?
마지막 질문은 상대 비교를 위해 어느 것이 더 정확합니까?
지금까지는 모든 함수 호출을 잡는 속도가 중요하지 않아서 Tracing을 진행했습니다.추적 기능이 작동하도록 같은 함수의 다양한 구현을 상대 비교하기 위해 필요합니다. – utengr
그것은 당신을 위해, 좋은 작동합니다. 나는 어떤 언어로도 좋은 경험을하지 못했다. 나는 항상 대형 시스템의 관련성이 낮은 부분을 최적화하는 것을 끝내었다. –
최적화 용도로 사용하지 않습니다. 단지보고를 위해, 함수 호출 내에서 다양한 알고리즘에 대한 상대적인 CPU 시간. 예를 들어, 알고리즘 A는 2 %의 CPU 사용률을 가지며 B는 5 %의 CPU 사용률을가집니다. – utengr