기준 프로필과 시작 프로필의 차이점

이 문서에서는 기준 프로필과 시작 프로필의 차이점을 설명합니다.

기준 프로필 Gradle 플러그인을 사용하여 BaselineProfileRule 테스트에서 생성된 사람이 읽을 수 있는 기준 프로필 파일을 자동으로 캡처할 수 있습니다. 앱을 빌드할 때 Android Gradle 플러그인 (AGP)은 사람이 읽을 수 있는 프로필 규칙을 Android 런타임 (ART)이 기기 내 컴파일에 효과적으로 사용할 수 있는 바이너리 형식으로 컴파일합니다. 바이너리 프로필이 1.5MB보다 작은 경우 Android 패키지 키트 (APK) 또는 Android App Bundle (AAB) 내에 baseline.prof로 패키징됩니다.

생성된 프로필 파일의 이름은 일반적으로 startup-prof.txtbaseline-prof.txt입니다.

기준 프로필

기준 프로필 파일에는 ART가 자주 사용되는 코드 경로를 사전 컴파일하는 데 사용하는 포괄적인 규칙 집합이 포함되어 있어 앱 시작을 최적화하고, 상호작용으로 인한 버벅거림을 줄이고, 전반적인 런타임 성능을 개선합니다.

기준 프로필 파일은 일반적으로 시작 프로필에 있는 규칙의 상위 집합입니다. 이 파일에는 앱 시작 최적화에 필요한 모든 규칙 (baselineProfile Gradle 작업을 통해 생성됨)과 기타 중요한 사용자 여정에 관한 추가 프로필이 포함됩니다. 예를 들어 스크롤, 다양한 화면 탐색 등이 있습니다.

이러한 비시작 규칙은 includeInStartupProfile 구성 필드의 값과 관계없이 생성됩니다. 자세한 내용은 기준 프로필 개요를 참고하세요.

시작 프로필

시작 프로필 파일에는 앱의 시작 경로에 맞게 특별히 최적화된 규칙이 포함되어 있습니다. 컴파일 중에 D8과 R8은 Java 바이트코드를 사용하여 Dalvik 실행 파일 (DEX) 파일을 생성합니다. D8과 R8은 모두 시작 프로필을 사용하여 클래스 로드를 더 빠르게 하기 위해 기본 .dex 파일에 중요한 시작 코드를 배치하여 DEX 레이아웃을 최적화합니다. 성능을 최대한 향상하려면 시작 코드가 이 기본 .dex 파일 내에 포함되어야 합니다. 시작 코드의 누적 크기가 너무 크면 후속 DEX 파일로 오버플로되며, 이 파일은 필수적이지 않은 클래스와 메서드로 채워져 시작 속도가 느려집니다.

시작 프로필은 DEX 레이아웃 최적화에 필요한 메타데이터를 제공하지만 R8 코드 최적화는 이 프로세스를 지원하는 데 매우 효과적일 수 있습니다. R8은 사용되지 않는 코드를 삭제하고 바이트 코드를 최소화하여 시작 로직의 총 공간을 줄입니다. 이렇게 줄이면 중요한 코드가 기본 .dex 파일 내에 유지될 가능성이 높아져 오버플로를 방지하고 더 광범위한 Android 버전에서 더 효율적인 실행을 보장할 수 있습니다. 일반적으로 앱의 초기 표시에 필수적인 테스트 시나리오에만 includeInStartupProfiletrue로 설정해야 합니다.

자세한 내용은 시작 프로필 개요를 참고하세요.