올바른 프로파일링 방법 선택

프로필은 수동 프로필 수집과 ProfilingManager API라는 두 가지 기본 방법을 사용하여 수집할 수 있습니다.

  • 수동 프로필 수집에는 로컬 기기에서 Perfetto를 수동으로 실행하여 프로필을 기록하는 작업이 포함됩니다. Perfetto로 시스템 트레이스 기록에 설명된 대로 명령어를 사용하거나 빠른 설정 타일을 사용하여 이 작업을 실행할 수 있습니다(빠른 설정 타일을 사용하여 기록 참고).
  • ProfilingManager를 사용하면 앱이 프로덕션에서 프로필을 수집할 수 있습니다.

많은 사용자의 데이터를 수집하고 분석하거나 드문 문제를 디버깅하려면 ProfilingManager를 사용하는 것이 좋습니다. 그러나 재현하기 쉬운 문제의 경우 수동 프로파일링이 더 나은 선택일 수 있습니다.

다음 표에서는 프로필을 기록하는 두 가지 방법의 차이점을 보여줍니다.

ProfilingManager 수동 프로필 수집
프로필 타이밍 제어 더보기 간략히 보기
프로필 소스 로컬 기기 및 공개 사용자 로컬 기기만
프로필 출력 수정됨 수정되지 않음
이벤트 기반 프로파일링 아니요
프로필 맞춤성 간략히 보기 더보기
확장성 높음 낮음

다음 섹션에서는 프로필 기록 방법의 차이점을 간략하게 설명합니다.

프로필 타이밍 제어

ProfilingManager API는 타이밍 프로필 초기화가 어려울 수 있는 수동 프로파일링에 비해 앱이 프로필을 시작하거나 중지하는 시점을 더 세밀하게 제어할 수 있습니다. ProfilingManager 를 사용하면 예기치 않은 동작을 로컬에서 재현할 수 없는 경우에도 프로필을 수집할 수 있으므로 예기치 않은 동작을 더 쉽게 프로파일링할 수 있습니다.

프로필 소스

ProfilingManager를 사용하면 공개 사용자의 데이터를 수집하여 성능 문제를 찾고 해결할 수 있습니다. 반면 수동 프로파일링을 사용하면 자체 기기에서만 문제를 재현할 수 있습니다.

프로필 출력

ProfilingManager 와 수동 수집은 서로 다른 유형의 프로필 출력을 생성합니다.

  • ProfilingManager는 수정된 트레이스를 생성합니다. 수정된 트레이스는 앱의 프로세스에 관한 정보를 표시하지만 시스템의 다른 앱의 데이터는 숨깁니다. ProfilingManager는 반환하기 전에 수집하고 수정하므로 다른 앱의 데이터를 표시하지 않아 개인 정보를 보호하면서 공개 사용자의 트레이스를 수집할 수 있습니다.

  • 수동 프로필 수집은 수정되지 않은 트레이스를 생성합니다. 시스템 트레이스를 수동으로 기록하면 출력에 시스템에서 실행 중인 모든 프로세스가 포함될 수 있습니다. 이러한 수정되지 않은 트레이스는 디버깅을 위한 더 완전한 데이터를 제공하지만 개인 정보 보호 문제로 인해 로컬에서만 액세스할 수 있습니다.

이벤트 기반 프로파일링

ProfilingManager 는 ANR (애플리케이션 응답 없음) 오류 또는 앱 시작과 같은 특정 이벤트가 발생할 때 프로필을 수집할 수도 있습니다. ProfilingManager는 이벤트 기반 수집을 위한 프로필 시작 및 중지를 처리합니다.

프로필 맞춤성

수동 프로파일링은 가장 많은 맞춤설정을 제공하는 반면 ProfilingManager는 맞춤설정 옵션이 더 적습니다.

확장성

ProfilingManager 는 앱 개발자가 공개 사용자의 프로필을 기록할 수 있는 유일한 옵션이므로 트레이싱을 확장하는 가장 좋은 방법입니다. ProfilingManager를 사용하면 대규모 트레이스 수집 및 분석을 설정할 수 있습니다. 수동 프로파일링은 로컬 사용으로 제한됩니다.