프로필 기반 최적화 지원은 AGDE 버전 22.2.71에서 도입되었습니다.
PGO 설정 찾기
Solution Explorer(솔루션 탐색기)에서 프로젝트 설정을 엽니다.
그림 1: Visual Studio Solution Explorer(솔루션 탐색기) 창
플랫폼이 Android 구성(예: Android-arm64-v8a)으로 설정되어 있는지 확인합니다.
왼쪽 패널에서 Configuration Properties > General(구성 속성 > 일반)을 선택합니다. PGO라는 속성 그룹을 찾습니다.
그림 2: 프로젝트 속성 대화상자
프로젝트에서 PGO 계측 빌드 사용 설정
프로젝트에 Instrumented(계측됨)라는 새 구성을 추가합니다. 이는 기존의 최적화된 빌드이며 테스트를 위해 개발 중에 사용하는 구성을 기반으로 합니다. 컴파일러 최적화 설정을 유지하는 한 추가 디버깅 기능을 계속 사용 설정할 수 있습니다.
Property Pages(속성 페이지) 대화상자에서 Configuration Manager…(구성 관리자)를 클릭합니다.
그림 3: Configuration Manager(구성 관리자) 대화상자
Configuration Manager(구성 관리자) 대화상자에서 Active solution configuration(활성 솔루션 구성) 드롭다운을 선택하고 <New…>(<새로 만들기...>)를 선택합니다.
그림 4: 새 빌드 구성 만들기
새로운 PGO 계측 구성을 만듭니다.
그림 5: New Solution Configuration(새 솔루션 구성) 대화상자
게임 프로필을 생성할 수 있도록 PGO 계측 모드에서 빌드를 사용 설정하려면 Profile-Guided Optimization Mode(프로필 기반 최적화 모드) 설정의 옵션 목록에서 Instrumented(계측됨)를 선택합니다.
그림 6: PGO 설정이 강조 표시된 프로젝트 속성 대화상자
Profile Guided Optimization Profiles(프로필 기반 최적화 프로필) 설정의 경우 Android 기기에서 원시 출력 프로필 데이터 파일을 쓸 폴더의 경로를 입력합니다.
일반적으로 이 값은 /data/data/<package
name>/cache/
와 같아야 합니다. 여기서 <package name>
은 APK의 전체 패키지 이름입니다(예: com.google.sample.tunnel).
작동 방식에 관한 자세한 내용은 Clang 문서를 참고하세요.
PGO 계측 프로필 데이터를 기기에 쓰기
PGO 데이터는 일반적으로 프로세스가 종료될 때 PGO 계측 시스템에서 기기에 작성합니다. Android에서는 앱을 나가는 것이 아니라 앱이 항상 종료됩니다. 즉, 기본 '디스크에 쓰기' 기능이 트리거되지 않으므로 앱에서 PGO 데이터를 수동으로 써야 합니다.
앱에서 __llvm_profile_write_file
을 명시적으로 호출하여 프로필 데이터를 작성해야 합니다. 이 기호는 PGO 계측 빌드를 빌드할 때만 사용할 수 있습니다. 이를 더 쉽게 하려면 __llvm_profile_write_file
을 정방향 선언할 때 다음 패턴을 사용하는 것이 좋습니다.
#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif
이 함수를 호출하면 이전에 지정한 폴더에 프로필 데이터가 작성됩니다.
프로필 실행 수행
프로필을 생성하려면 대상 기기에서 PGO 계측으로 빌드된 APK를 실행하세요. 만족스럽게 코드를 실행하고 __llvm_profile_write_file
함수 호출을 트리거한 후에 앱에서 프로필 데이터를 저장소에 씁니다.
이 시점에서는 컴파일러가 사용할 수 있도록 기기에서 프로필을 다시 복사합니다.
컴파일러에서 사용할 프로필 데이터 준비
개별적으로 사용하는 경우 Android NDK에서 Clang/LLVM의 일부로 제공되는 명령줄 도구 llvm-profdata
는 빌드의 프로필 기반 최적화 중에 컴파일러에서 사용할 프로필 데이터 파일을 준비하는 데 사용됩니다.
AGDE는 프로젝트에 추가한 프로필 데이터 파일을 병합하고 프로젝트 속성 페이지의 Profile-Guided Optimization Mode(프로필 기반 최적화 모드) 설정이 Optimized(최적화됨)로 설정될 때 이를 사용하여 이 단계를 자동으로 실행합니다.
프로필 기반 최적화를 사용 설정하여 프로젝트 빌드
이제 프로필을 캡처하여 프로젝트에 추가했으므로 컴파일러가 이 데이터를 사용하여 빌드 최적화를 미세 조정할 수 있습니다.
PGO 최적화 빌드의 새 프로젝트 구성을 만들어 필요할 때 이 모드로만 빌드하도록 합니다.
그림 7: 새로운 PGO 최적화 빌드 구성 만들기
프로젝트 속성 페이지의 Profile-Guided Optimization Mode(프로필 기반 최적화 모드) 설정을 Optimized(최적화됨)로 설정합니다.
그림 8: PGO 최적화 모드를 Optimized(최적화됨)로 설정
기기에서 파일을 복사하고 솔루션 탐색기에서 프로젝트에 추가합니다. 이러한 프로필 데이터 파일은 다음에 PGO 최적화 구성을 빌드할 때 컴파일러에 의해 선택되며 컴파일러가 코드를 최적화하는 방법을 미세 조정하는 데 사용됩니다.
ADB를 사용하거나 Android Device Explorer를 사용하여 기기에서 프로필 데이터 파일을 프로젝트로 복사할 수 있습니다.
AGDE 외부에서 프로필 기반 최적화 사용
AGDE에서 지원하지 않는 빌드 시스템을 사용하는 경우 빌드를 직접 수정해야 할 수도 있습니다. Clang
문서
필요한 스위치(-fprofile-generate
)를 다룹니다.
-fprofile-use
입니다.
게임에 미들웨어 엔진을 사용하는 경우 엔진 문서를 참조하여 PGO를 사용 설정하는 방법(지원되는 경우)을 확인하세요.